个推透传php,个推透传的一点心得体会

折腾了几天,终于搞定了安卓和ios下的个推透传推送,各种踩坑啊。

先来说说我想达到的目标,我要传送自定义的参数如文章id,然后实现页面的跳转。在安卓下,通过点击状态栏消息,跳转到指定id的页面,在ios下,分为2种情况,

1)app离线:推送的消息和安卓一样,在状态栏展现,通过点击实现跳转。

2)app在线:此时接收到的参数可以用一个confirm来询问是否跳转。

一、服务器端推送代码

首先来看看个推的推送模板,我是用php的。

function IGtTransmissionTemplateDemo(){

$template = new IGtTransmissionTemplate();

$template->set_appId(APPID);//应用appid

$template->set_appkey(APPKEY);//应用appkey

$template->set_transmissionType(1);//透传消息类型

$template->set_transmissionContent("测试离线ddd");//透传内容

//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息

// 如下有两个推送模版,一个简单一个高级,可以互相切换使用。此处以高级为例,所以把简单模版注释掉。

// APN简单推送

// $apn = new IGtAPNPayload();

// $alertmsg=new SimpleAlertMsg();

// $alertmsg->alertMsg="";

// $apn->alertMsg=$alertmsg;

// $apn->badge=2;

// $apn->sound="";

// $apn->add_customMsg("payload","payload");

// $apn->contentAvailable=1;

// $apn->category="ACTIONABLE";

// $template->set_apnInfo($apn);

// APN高级推送

$apn = new IGtAPNPayload();

$alertmsg=new DictionaryAlertMsg();

$alertmsg->body="body";

$alertmsg->actionLocKey="ActionLockey";

$alertmsg->locKey="LocKey";

$alertmsg->locArgs=array("locargs");

$alertmsg->launchImage="launchimage";

// IOS8.2 支持

$alertmsg->title="水培喝水";

$alertmsg->titleLocKey="TitleLocKey";

$alertmsg->titleLocArgs=array("TitleLocArg");

$apn->alertMsg=$alertmsg;

$apn->badge=1;

$apn->sound="";

$apn->add_customMsg("payload","阿波罗度上市");

// $apn->contentAvailable=1;

$apn->category="ACTIONABLE";

$template->set_apnInfo($apn);

return $template;

}

二、推送参数

1)在线透传参数设置

$template->set_transmissionContent("测试离线ddd");这一行就是负责在线透传的,我们稍微改装下,填写入我们想要传送的自定义参数。

$template->set_transmissionContent('{"title":"文章标题","content":"正文内容","payload":{"id":"1","type":"新闻"}}');

2)离线透传参数设置

而 从 $apn = new IGtAPNPayload();这一行开始,构建的都是针对ios下app离线的推送

其中 $alertmsg->body="body"; 对应的是在线透传的content

$alertmsg->locKey="LocKey"; 对应的是在线透传的title

$alertmsg->title="水培喝水"; 对应的也是在线透传的title

然后 $apn->add_customMsg("payload","阿波罗度上市"); 这是用来传送自定义参数的,我们来改成我们想要的

$apn->add_customMsg("id","1");

$apn->add_customMsg("type","新闻");

三、客户端的解析

// 监听离线点击消息事件

plus.push.addEventListener("click", function(msg) {

var payload=(plus.os.name=='iOS')?msg.payload:JSON.parse(msg.payload);

pushGetRun(payload);

}, false);

// 监听在线消息事件

plus.push.addEventListener("receive", function(msg) {

if ( msg.payload ) {

if ( typeof(msg.payload)=="string" ) {

//alert( "payload(String): "+msg.payload );

} else {

var id = msg.payload.id;

var url = 'www/tpl/detail.html?id=' + id;

plus.nativeUI.confirm( "收到一条新消息,是否立即查看", function(e){

if(e.index==0){

mui.openWindow({

url: url,

id: 'notice' + id

});

}

}, "新消息通知", ["查看","忽略"] );

}

} else {

//alert( "payload: undefined" );

}

}, false);

});

function pushGetRun(payload) {

var id = payload.id;

var url = 'www/tpl/detail.html?id=' + id;

mui.openWindow({

url: url,

id: 'detail' + id

});

}

要注意的是在ios和安卓下,接收到的msg.payload解析不同,ios下是json数组,而安卓下却是string,需要转为json数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值