TomVision
TomVision
  • 发布:2018-01-03 12:40
  • 更新:2021-08-09 11:02
  • 阅读:4004

关于个推分享功能的经验总结

分类:5+ SDK

由于相关的文档冗杂,社区、QQ群互动差,完全是一步一个坑爬过来,稍微做个总结。后续开发中也可以给自己理个思路,欢迎指正。

安卓端

安卓端暂不考虑推送进程被系统杀除的情况(其实我无解)。开发的这个是新闻类的应用,所以推送的应用场景大多数在点击消息通知后跳转至新闻情况页。
无论应用离线或在线的情况下只要使用标准的透传消息格式即可成功,应用中只需要监听click写相关事件即可。标准的透传格式为

{title:"通知标题",content:"通知内容",payload:"通知去干嘛这里可以自定义"}

不符合以上格式的推送内容则会触发receive事件,安卓端上只要推送的工作人员注意就不会有问题。

iOS端

iOS端应用推送的时候分两个场景,分别是:

  1. 应用在线 应用在线的情况下实测收不到APNS下发的通知。推送之后需要在receive中本地创建一条推送通知,看很多开发者是使用confirm提醒用户的,我这边做了一个toast+提示音的方式提醒用户有新通知。个推平台上填写时必填内容填一下,“消息内容”中填写
    {"content":"需要推送的标题","payload":"传值用"}

    客户端上处理一下数据就可以了。

  2. 应用离线 应用离线的情况下可以收到APNS下发的通知。离线推送的时候需要注意一下非必填项也需要填写一下,不然客户端会发生有震动有声音但是通知不显示的情况。这时候的消息内容中填写payload的值,在body里直接填写要显示的标题就可以了。

必看

一、 参数配置 《推送开发指南》中有详情介绍,这点不阐述,申请完个推账户,将新建的应用参数填写到manifest.json中即可
二、 注意事项

  1. iOS推送的时候只支持content,原先安卓中填写的title默认为应用名称。
  2. 应用在线时推送的消息由于是本地创建的会再触发receive事件,发生循环创建消息导致应用闪退的问题。所以首次receive事件触发并创建本地消息的同时需要在payload里携带一个参数用以区分。
  3. iOS推送测试的时候一定要把推送的证书上传到个推上,不然无法接收到APNS消息的。 打包的时候不要把和个推上已经上传的推送证书搞错了。
0 关注 分享

要回复文章请先登录注册

8***@qq.com

8***@qq.com

回复 jtshushu :
app离线状态必须走厂商通道,走个推通道只有等app在线后才推送。
2021-08-09 11:02
jtshushu

jtshushu

兄弟怎么解决 app没打开或app退出了 做个推呢
2019-04-23 11:59
wen如故i

wen如故i

http://ask.dcloud.net.cn/article/1043 这有个解决方案,听说离线是可以。不过我试过离线打包,其他问题太多了。第一次做的app又比较low,难解决。 后台转前台的 简单版上面的代码的会包错。我自己修改了下var pushManager = plus.android.importClass("com.igexin.sdk.PushManager");
plus.android.invoke( pushManager, 'initialize' ); 重新初始化就行了。
2018-01-03 13:10
TomVision

TomVision (作者)

回复 wen如故i :
谢谢。安卓进程很容易被系统杀的,这个不知道有没有解决方案
2018-01-03 13:01
wen如故i

wen如故i

写的还行,安卓应用离线,且前台没有运行带有个推app情况下,也能收到推送吗?有些手机好像是不行的吧。
2018-01-03 12:53