极光推送

极光推送_第1张图片

从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息。

红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果 APNs 服务器推送。由 APNs Server 推送到 iOS 设备上。

蓝色部分是 JPush 应用内推送部分,即 App 启动时,内嵌的 JPush SDK 会开启长连接到 JPush Server,从而 JPush Server 可以推送消息到 App 里。

APNs 通知

APNs 通知:是指通过向 Apple APNs 服务器发送通知,到达 iOS 设备,由 iOS 系统提供展现的推送。用户可以通过 IOS 系统的 “设置” >> “通知” 进行设置,开启或者关闭某一个 App 的推送能力。

JPush iOS SDK 不负责 APNs 通知的展现,只是向 JPush 服务器端上传 Device Token 信息,JPush 服务器端代理开发者向 Apple APNs 推送通知。

获取 APNs 推送内容

应用内消息

应用内消息:JPush iOS SDK 提供的应用内消息功能,在 App 在前台时能够收到推送下来的消息。App 可使用此功能来做消息下发动作。

此消息不经过 APNs 服务器,完全由 JPush 提供功能支持。

获取应用内消息推送内容

APNs通知与应用内消息对比

如果只需要发送通知,则可以忽略应用内消息的处理。对于两种消息的代码处理可以参考API 部分的描述。

JPush API v3 支持同时一次调用同时推送 APNs 通知与 JPush 应用内消息。这在某些应用场景里是有意义的。

APNS应用内消息

推送原则由JPush服务器发送至APNS服务器,再下发到手机。由JPush直接下发,每次推送都会尝试发送,如果用户在线则立即收到。否则保存为离线。

离线消息离线消息由APNS服务器缓存按照Apple的逻辑处理。用户不在线JPush server 会保存离线消息,时长默认保留一天。离线消息保留5条。

推送与证书环境应用证书和推送指定的iOS环境匹配才可以收到。自定义消息与APNS证书环境无关。

接收方式应用退出,后台以及打开状态都能收到APNS需要应用打开,与JPush 建立连接才能收到。

展示效果如果应用后台或退出,会有系统的APNS提醒。

如果应用处于打开状态,则不展示。

非APNS,默认不展示。可通过获取接口自行编码处理。

处理函数Apple提供的接口:didReceiveRemoteNotificationJPush提供的接口:networkDidReceiveMessage


为什么iOS收不到推送消息?

如果你确认 appKey 在 SDK 客户端与 Portal 上设置是一致,其他环节也按照文档正确地操作。但还是收不到推送消息。那么,有一定的可能性,是你在 Portal 上上传的证书,不是 APNs (Push) 证书。推送时指定的iOS推送环境和应用证书是同一个环境。

请参考iOS 证书设置指南再次检查证书选择是否正确。

请注意:iOS能接受消息的必要条件是:应用程序的证书要和你上传到jpush portal上的证书对应,如果你的程序是直接在xcode上运行的,你的应用部署环境必须是开发状态才能收到APNS消息。

温馨提示:目前api推送的时候可以通过参数apns_production可以指定推送环境,false为开发环境,true为生产环境。V3 api不带此参数则默认为生产环境,V3 api封装的sdk 默认为开发环境。如果api有传apns_production则以此值为准,否则以应用详情的部署环境为准。

注意这里的参数apns_production 根据后台设置的参数,和客户端设置的参数,两者配置的参数一直的话,才会收到通知,所以在验证的时候,一定要确定客户端和后台传递的参数是一致的,避免因参数不一致导致的时间浪费,因为这个参数是有默认值的。

你可能感兴趣的:(极光推送)