Background Remote Notification 消息详细解读
iOS 的通知一般需要点击了通知栏消息才会走对应的方法,才可以取到消息内容!仅点击 icon 这个操作不会走任何获取消息的方法
如果需要在不点击通知栏的情况下,可以获取到消息内容,可以推送 Background Remote Notification。
这类消息的规则是:客户端需要处于Background 或 Suspended 状态, 被杀死后无法调起该方法
如果是推送 Silent Remote Notifications 消息,不保证成功,在 Apple 那边有频率控制,具体情况不详。
该类消息被收到后,Background 方法就会被调用,获得信息内容。
如果你在完全按照说明配好了客户端和服务端后,收到消息时并没有走 Background 方法,那么一般是 iOS 系统问题、Apple 服务器下发消息的问题。(因极光 apns 消息只是对原生方法的封装,最终消息由 Apple 服务器下发,iOS系统直接展示)。如果在配好后,连上 xcode 会走方法,断开 xcode 后不走方法,请根据 本帖末尾客户端的配置说明检查客户端的设置
点击了展示该消息的通知栏,会再次调用 Background 方法。
点击了图标 这个操作并不会 再次调用 Background 方法。
- 经官方 @aoyy 测试结果如下 :
推送的时候怎么设置 content-available
- 官网-控制台-推送-发送通知-目标平台选择iOS平台-下翻,点可选设置,即可看到选项,勾选即可
- 服务端 API-Notification-iOS 里有字段 content-available。json 示例如下:
{ "platform": "all", "audience": { "tag": ["深圳"] },//注意 audience 不要传成了字符串 "notification": { "android": { "alert": "Hi, JPush!", "title": "Send to Android" }, "ios": { "alert": "Hi, JPush!", "sound": "default", "badge": "+1", "content-available": true, //此处设置 content-available "extras": { "newsid": 321 } } }, "options": { "time_to_live": 6000,//离线保存时间,单位是 秒 "apns_production": false //注意环境问题,false 代表开发环境 } }
注:客户端也必须同步配置才会有效,请阅读上述链接中的详细说明!
有必要勾选 background modes >remote Notification的选项(或可能还需要勾选 background fetch ),通知设置会增加 后台应用刷新按钮,请注意手机端不要关闭该开关
间接的方法:
同时推送通知+自定义消息
自定义消息前台接收,不展示,可用来传递数据
自己服务端保存推送信息,进入前台后向自己的服务器去获取历史信息展示在页面上
注:如果是要在收到消息后做一点处理再展示,iOS 10 开始提供的 service extension 功能可以满足需求,阅读文档,并自行看Apple的文档研究 iOS 10 新特性如何配置。
如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)
点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
0条评论