home-school-contact-app/源码/php/AiYaSchoolPush/xmpush/Sender.php

169 lines
5.3 KiB
PHP
Raw Normal View History

2021-10-19 00:18:35 +00:00
<?php
/**
* MiPush消息发送类.
* @author wangkuiwei
* @name Sender
* @desc MiPush消息发送
*
*/
namespace xmpush;
class Sender extends HttpBase {
public function __construct(){
parent::__construct();
}
//指定regId单发消息
public function send(Message $message,$regId,$retries=1){
$fields = $message->getFields();
$fields['registration_id'] = $regId;
$url = Constants::$domain.Constants::reg_url;
return $this->postResult($url, $fields,$retries);
}
//指定regId列表群发
public function sendToIds(Message $message,$regIdList,$retries=1){
$fields = $message->getFields();
$jointRegIds = '';
foreach($regIdList as $regId){
if(isset($regId)){
$jointRegIds .= $regId.Constants::$comma;
}
}
$fields['registration_id'] = $jointRegIds;
$url = Constants::$domain.Constants::reg_url;
return $this->postResult($url, $fields,$retries);
}
//多条发送
public function multiSend($targetMessages,$type,$retries=1){
if($type == TargetedMessage::TARGET_TYPE_ALIAS){
$url = Constants::$domain.Constants::multi_messages_aliases_url;
}else if($type == TargetedMessage::TARGET_TYPE_USER_ACCOUNT){
$url = Constants::$domain.Constants::multi_messages_user_accounts_url;
}else{
$url = Constants::$domain.Constants::multi_messages_regids_url;
}
$data = array();
foreach($targetMessages as $targetMsg){
array_push($data,$targetMsg->getFields());
}
$fields = array('messages' => json_encode($data));
return $this->postResult($url, $fields,$retries);
}
//多条发送
public function multiSendAtTime($targetMessages,$type,$timeToSend,$retries=1){
if($type == TargetedMessage::TARGET_TYPE_ALIAS){
$url = Constants::$domain.Constants::multi_messages_aliases_url;
}else if($type == TargetedMessage::TARGET_TYPE_USER_ACCOUNT){
$url = Constants::$domain.Constants::multi_messages_user_accounts_url;
}else{
$url = Constants::$domain.Constants::multi_messages_regids_url;
}
$data = array();
foreach($targetMessages as $targetMsg){
array_push($data,$targetMsg->getFields());
}
$fields = array('messages' => json_encode($data),'time_to_send' => $timeToSend);
return $this->postResult($url, $fields,$retries);
}
//指定别名单发
public function sendToAlias(Message $message,$alias,$retries=1){
$fields = $message->getFields();
$fields['alias'] = $alias;
$url = Constants::$domain.Constants::alias_url;
return $this->postResult($url, $fields, $retries);
}
//指定别名列表群发
public function sendToAliases(Message $message,$aliasList,$retries=1){
$fields = $message->getFields();
$jointAliases = '';
foreach($aliasList as $alias){
if(strlen($jointAliases)>0){
$jointAliases = $jointAliases.Constants::$comma;
}
$jointAliases = $jointAliases.$alias;
}
$fields['alias'] = $jointAliases;
$url = Constants::$domain.Constants::alias_url;
return $this->postResult($url, $fields, $retries);
}
//指定userAccount群发
public function sendToUserAccount(Message $message,$userAccount,$retries=1){
$fields = $message->getFields();
$fields['user_account'] = $userAccount;
$url = Constants::$domain.Constants::user_account_url;
return $this->postResult($url, $fields, $retries);
}
//指定userAccount列表群发
public function sendToUserAccounts(Message $message,$userAccountList,$retries=1){
$fields = $message->getFields();
$jointUserAccounts = '';
foreach($userAccountList as $userAccount){
if(strlen($jointUserAccounts)>0){
$jointUserAccounts = $jointUserAccounts.Constants::$comma;
}
$jointUserAccounts = $jointUserAccounts.$userAccount;
}
$fields['user_account'] = $jointUserAccounts;
$url = Constants::$domain.Constants::user_account_url;
return $this->postResult($url, $fields, $retries);
}
//指定topic群发
public function broadcast(Message $message,$topic,$retries=1){
$fields = $message->getFields();
$fields['topic'] = $topic;
$url = Constants::$domain.Constants::topic_url;
return $this->postResult($url, $fields, $retries);
}
//向所有设备发送消息
public function broadcastAll(Message $message,$retries=1){
$fields = $message->getFields();
$url = Constants::$domain.Constants::all_url;
return $this->postResult($url, $fields, $retries);
}
//广播消息多个topic支持topic间的交集、并集或差集
public function multiTopicBroadcast(Message $message,$topicList,$topicOp,$retries=1){
if(count($topicList)==1){
return $this->broadcast($message,$topicList[0],$retries);
}
$fields = $message->getFields();
$jointTopics = '';
foreach($topicList as $topic){
if(strlen($jointTopics)>0){
$jointTopics = $jointTopics.Constants::$multi_topic_split;
}
$jointTopics = $jointTopics.$topic;
}
$fields['topics'] = $jointTopics;
$fields['topic_op'] = $topicOp;
$url = Constants::$domain.Constants::multi_topic_url;
return $this->postResult($url, $fields, $retries);
}
// 检测定时任务是否存在
public function checkScheduleJobExist($msgId,$retries=1){
$fields = array('job_id' => $msgId);
$url = Constants::$domain.Constants::check_schedule_job_exist;
return $this->postResult($url, $fields, $retries);
}
// 删除定时任务
public function deleteScheduleJob($msgId){
$fields = array('job_id' => $msgId);
$url = Constants::$domain.Constants::delete_schedule_job;
return $this->postResult($url, $fields, $retries);
}
}
?>