您好,这里是unipush问题交流群,很高兴为您服务,在线支持时间为工作日早上9:00-12:00;下午13:30-18:00,有什么问题可以在这里交流,谢谢。
UniPush开通指南 https://ask.dcloud.net.cn/article/35716
UniPush使用指南 http://ask.dcloud.net.cn/article/35622
Unipush常见问题 https://ask.dcloud.net.cn/article/36611
服务端api接口推送调用文档
https://docs.getui.com/getui/server/rest_v2/push/
—
api文档 https://docs.getui.com/getui/server/rest_v2/common_args/
uniapp开发说明 https://ask.dcloud.net.cn/article/35622
自己写的code
include("./getui-pushapi-php-client-v2-hf32/GTClient.php");
$api = new GTClient("https://restapi.getui.com","9N6ApIQ4J79Z2zkJUErBq4", "6sK8gLODie63nMnrktFIl2","hbGt1Z8atYA3GtPXUdT3Q7");
//设置推送参数
$push = new GTPushRequest();
$push->setRequestId(md5(time().mt_rand(1000,9999)));
$pushChannel = new GTPushChannel();
$message = new GTPushMessage();
$notify = new GTNotification();
$notify->setTitle($title);
$notify->setBody($msg);
//点击通知后续动作,目前支持以下后续动作:
//1、intent:打开应用内特定页面url:打开网页地址。2、payload:自定义消息内容启动应用。3、payload_custom:自定义消息内容不启动应用。4、startapp:打开应用首页。5、none:纯通知,无后续动作
$notify->setClickType("none");
$message->setNotification($notify);
$push->setPushMessage($message);
$push->setCid("CID");
$alert = new GTAlert();
$alert->setTitle($title);
$alert->setBody($msg);
$aps = new GTAps();
$aps->setAlert($alert);
$iosDto = new GTIos();
$iosDto->setAps($aps);
$iosDto->setType("notify");
$pushChannel->setIos($iosDto);
/* android走个推通过,所以不需要走厂商通道更快一些。
$androidDTO = new GTAndroid();
$ups = new GTUps();
$notification = new GTThirdNotification();;
$notification->setTitle($title);
$notification->setBody($msg);
$ups->setNotification($notification);
$androidDTO->setUps($ups);
$pushChannel->setAndroid($androidDTO);
*/
$push->setPushChannel($pushChannel);
//处理返回结果
$result = $api->pushApi()->pushAll($push);
//echo var_export($result,true);
echo "<br>发送成功<br>";
-----------------------别人写的code-----------------------------------
1.检查参数是否正确。
2.可以先不要使用透传方式。
3.是否设置了厂商通道消息内容
4.设置为打开应用内特定页面就是intent参数。
5.intent参数是否正确
intent:#Intent;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode(标题).";S.content=".urlencode($内容).";S.payload=".json_encode(你的自定义参数).";end
6.后台参看代码。
$api = new GTClient("https://restapi.getui.com/","", "","");
$stt = ['default'=>1];
//设置推送参数
$push = new GTPushRequest();
$push->setRequestId(time());
$message = new GTPushMessage();
$notify = new GTNotification();
$channel = new GTPushChannel();
//配置推送条件
$str = new GTStrategy();
$str->setDefault(1);
$str->setHw(1);
$setting = new GTSettings(); //定时推送暂无
$setting->setStrategy($str);
$push->setSettings($setting);
$setting->setTtl(3600000); ////消息有效期,走厂商消息需要设置该值
//推送苹果离线通知标题内容
$alert = new GTAlert();
$alert->setTitle($title);
$alert->setBody($content);
$aps = new GTAps();
//1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
//苹果建议1小时最多推送3条静默消息
$aps->setContentAvailable(0);
$aps->setSound("default");
$aps->setAlert($alert);
$iosDto = new GTIos();
$iosDto->setAps($aps);
$iosDto->setType("notify");
$pushChannel = new GTPushChannel();
$pushChannel->setIos($iosDto);
//安卓离线厂商通道推送消息体
$pushChannel = new GTPushChannel();
$androidDTO = new GTAndroid();
$ups = new GTUps();
$notification1 = new GTThirdNotification();;
$notification1->setTitle($title);
$notification1->setBody($content);
$ups->setNotification($notification1);
if($clickType == 'none') //设置推送类型
{
$notification1->setClickType($clickType);
}else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP
$notification1->setClickType($clickType);
$notification1->setPayload(json_encode($data));
}else if($clickType == 'url'){ //打开URL
$notification1->setClickType($clickType);
$notification1->setUrl($url);
}else if($clickType == 'intent'){ //打开特定页面
$notification1->setClickType($clickType);
$notification1->setIntent("intent:#Intent;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");
}else{
$notification1->setClickType($clickType);
}
//各厂商自有功能单项设置
if($time){
$message->setDuration($time); //设置推送时间
$data = json_encode(array('title'=>$title,'content'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));
}else{
$data = json_encode(array('title'=>$title,'content'=>$content,'payload'=>json_encode($data)));
}
//$ups->setTransmission($data);
$androidDTO->setUps($ups);
$pushChannel->setAndroid($androidDTO);
$push->setPushChannel($pushChannel);
//个推在线通道
$notify->setTitle($title);
$notify->setBody($content);
if($img) $notify->setBigImage($img); //推送图片
//1、intent:打开应用内特定页面 2、url:打开网页地址。3、payload:自定义消息内容启动应用。4、payload_custom:自定义消息内容不启动应用。5、startapp:打开应用首页。6、none:纯通知,无后续动作
if($clickType == 'none') //设置推送类型
{
$notify->setClickType($clickType);
}else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP
$notify->setClickType($clickType);
$notify->setPayload(json_encode($data));
}else if($clickType == 'url'){ //打开URL
$notify->setClickType($clickType);
$notify->setUrl($url);
}else if($clickType == 'intent'){ //打开特定页面
$notify->setClickType($clickType);
$notify->setIntent("intent:#Intent;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");
}else{
$notify->setClickType($clickType);
}
$message->setNotification($notify);
$push->setPushMessage($message);
/* if($time){
$message->setDuration($time); //设置推送时间
$data = json_encode(array('title'=>$title,'body'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));
}else{
$data = json_encode(array('title'=>$title,'body'=>$content,'payload'=>json_encode($data)));
}
$ups->setTransmission($data); //
$android->setUps($ups);
$channel->setAndroid($android);
$push->setPushChannel($channel);
$push->setPushMessage($message);*/
if($cid) //推送给某个用户
{
$push->setCid($cid);
//处理返回结果
$result = $api->pushApi()->pushToSingleByCid($push);
}else{
$result = $api->pushApi()->pushAll($push);
}
Log::info('推送数据:【推送】'.json_encode($result)); //写入日志
return $result;
-----------------------------------------------------
1,安装项目依赖。
composer require getuilaboratory/getui-pushapi-php-client-v2
2,根据用户Cid单推
public function pushToSingleByCid($system = 'android'){
//创建API,APPID等配置参考 环境要求 进行获取
$api = new \GTClient("https://restapi.getui.com","你的个推appkey", "你的个推appId","你的个推masterSecret");
//设置推送参数
$push = new \GTPushRequest();
$push->setRequestId($this->micro_time());
$message = new \GTPushMessage();
$notify = new \GTNotification();
$settings = new \GTSettings();
$strategy = new \GTStrategy();
$strategy->setDefault(\GTStrategy::STRATEGY_GT_FIRST);
$settings->setStrategy($strategy);
$notify->setTitle("订单提醒");
$notify->setBody("您有新的订单,请及时处理");
//点击通知后续动作,目前支持以下后续动作:
//1、intent:打开应用内特定页面url:打开网页地址。2、payload:自定义消息内容启动应用。3、payload_custom:自定义消息内容不启动应用。4、startapp:打开应用首页。5、none:纯通知,无后续动作
// $notify->setClickType("intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;component=and.dcloud.Lapp/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end");
$notify->setClickType("startapp");
//判断一下操作系统
if($system == "android"){
$message->setNotification($notify); //android
}elseif($system == "ios"){
$message->setTransmission("您有新的订单,请及时处理"); //ios
}
$push->setPushMessage($message);
$push->setSettings($settings);
$pushChannel = new \GTPushChannel();
//ios
$ios = new \GTIos();
$ios->setType("notify");
$ios->setAutoBadge("1");
$ios->setPayload("ios_payload");
$ios->setApnsCollapseId($this->micro_time());
//aps设置
$aps = new \GTAps();
$aps->setContentAvailable(0);
$aps->setSound("music");
$aps->setCategory("category");
$aps->setThreadId("threadId");
$alert = new \GTAlert();
$alert->setTitle("订单提醒");
$alert->setBody("您有新的订单,请及时处理");
$alert->setActionLocKey("ActionLocKey");
$alert->setLocKey("LocKey");
$alert->setLocArgs(array("LocArgs1","LocArgs2"));
$alert->setLaunchImage("LaunchImage");
$alert->setTitleLocKey("TitleLocKey");
$alert->setTitleLocArgs(array("TitleLocArgs1","TitleLocArgs2"));
$alert->setSubtitle("");
$alert->setSubtitleLocKey("");
$alert->setSubtitleLocArgs(array("subtitleLocArgs1","subtitleLocArgs2"));
$aps->setAlert($alert);
$ios->setAps($aps);
$multimedia = new \GTMultimedia();
$multimedia->setUrl("url");
$multimedia->setType(1);
$multimedia->setOnlyWifi(false);
$multimedia2 = new \GTMultimedia();
$multimedia2->setUrl("url2");
$multimedia2->setType(2);
$multimedia2->setOnlyWifi(true);
$ios->setMultimedia(array($multimedia));
$ios->addMultimedia($multimedia2);
$pushChannel->setIos($ios);
//安卓
$android = new \GTAndroid();
$ups = new \GTUps();
// $ups->setTransmission("ups Transmission");
$thirdNotification = new \GTThirdNotification();
$thirdNotification->setTitle("订单提醒");
$thirdNotification->setBody("您有新的订单,请及时处理");
$thirdNotification->setClickType(\GTThirdNotification::CLICK_TYPE_STAERAPP);
$thirdNotification->setIntent("intent:#Intent;component=and.dcloud.Lapp/io.dcloud.PandoraEntry;S.parm1=value1;S.parm2=value2;end");
$thirdNotification->setUrl("https://www.baidu.com");
$thirdNotification->setPayload("payload");
$thirdNotification->setNotifyId(mt_rand(0,2147483647));
$ups->addOption("HW","badgeAddNum",1);
$ups->addOption("OP","channel","Default");
$ups->addOption("OP","aaa","bbb");
$ups->addOption(null,"a","b");
$ups->setNotification($thirdNotification);
$android->setUps($ups);
$pushChannel->setAndroid($android);
$push->setPushChannel($pushChannel);
$push->setCid("用户cid");
$result = $api->pushApi()->pushToSingleByCid($push);
}
public function micro_time()
{
list($usec, $sec) = explode(" ", microtime());
$time = ($sec . substr($usec, 2, 3));
return $time;
}
