您的位置:首页 > 移动开发 > IOS开发

iOS 集成极光推送(一)

2016-04-20 10:34 477 查看

1.苹果推送机制

先看苹果官方对其推送做出解释的概要图。(转载于 )



provider 是你手机应用发出推送消息的服务器,而APNs(Apple Push Notification Server) 则是苹果消息推送服务器。你本地的服务器当需要给应用推送一条消息的时候,先要将消息发出到苹果推送服务器,然后再由苹果推送服务器将消息发到安装了该应用的手机。

再看一张解释图:



根据上图的逻辑我来给大家解释一下:

你的iOS应用需要去注册APNs消息推送服务

当苹果APNs推送服收到来自你应用的注册消息就会返回一串device token给你(很重要)

将应用收到的device Token传到你本地的Push服务器

当你需要为应用推送消息的时候,你本地的推送服务器会将消息,以及Device Token打包发到APNs服务器。

APNs再将消息推送给目的iPhone。

2. JPush iOS



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

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

蓝色部分是 JPush 应用内推送部分,即 App 启动时,内嵌的 JPush SDK 会开启长连接到 JPush Server,从而 JPush Server 可以推送消息到 App 里。(这部分我不是很懂,JPush Server为什么可以推送消息到App?)

3. 集成极光推送

集成极光推送的步骤在极光官网都有详细的介绍。这里简单描述下推送流程,相关链接在:

iOS证书设置指南

iOS SDK集成指南

3.1 iOS证书设置指南

3.1.1 创建应用程序ID

3.1.2 配置和下载证书

3.1.3 上传证书

3.1.4 Provisioning Profile的创建

这地方记住一定不要忘记了!!!

如果APP能够得到device Token,但是收不到推送,检查下自己的Provisioning Profile是否配置没。,如图所示



3.1.5 XCode的证书配置教程

参照iOS SDK 集成指南集成JPush SDK 和上传了推送用到的p12证书后在编译运行前需要先配置一下证书,步骤如下:

打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:



点击项目,选择目标TARGETS后进入Build Setting 界面,搜索“Code signing”,按照下图配置



3.2 iOS7 Background Remote Notification

本次iOS 7在推送方面最大的变化就是允许,应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。

Remote Notifications 与之前版本的对比可以参考下面两张 Apple 官方的图片便可一目了然。





如果只携带content-available: 1 不携带任何badge,sound 和消息内容等参数,则可以不打扰用户的情况下进行内容更新等操作即为“Silent Remote Notifications”。



3.2.1客户端设置

开启Remote notifications



修改通知处理函数

当注册了Backgroud Modes -> Remote notifications 后,notification 处理函数一律切换到下面函数,后台推送代码也在此函数中调用。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;


3.2.2 服务端推送设置

推送消息携带 content-available: 1 是Background 运行的必须参数,如果不携带此字段则与iOS7 之前版本的普通推送一样。

3.2.3 使用Web Portal推送

在“可选设置内”选择对应的参数。



3.2.4 iOS 8 UIUserNotificationSettings

本次iOS 8在推送方面最大的变化就是修改了推送的注册接口,在原本的推送type的基础上,增加了一个categories参数,这个参数的目的是用来注册一组和通知关联起来的button的事件。

这个categories由一系列的 UIUserNotificationCategory组成。每个UIUserNotificationCategory对象包含你的app用来响应本地或者远程通知的信息。每一个对象的title作为通知上每一个button的title展示给用户。

iOS 9 UIUserNotificationActionBehaviorTextInput

本次iOS 9在推送方面最大的变化就是修改了推送Category的类型,在原本的推送categories的基础上,增加了一个text Action类型,这个参数的目的是用来注册通过通知快捷文字输入的事项。

这个categories由一系列的 UIUserNotificationCategory组成。每个UIUserNotificationCategory对象允许添加一组UIMutableUserNotificationAction类型的参数来增加通知栏上的项目。如今iOS9在原有的UIMutableUserNotificationAction类型增加了Text输入类型(UIUserNotificationActionBehaviorTextInput),通过behavior来设置(只有iOS9才拥有的属性)。

回调的方法iOS9使用了两个新的回调方法来处理点击按钮的事件:

3.3 在JPush Portal上创建应用

在JPush Portal 上创建应用

导入API开发包到应用程序

必要的框架

Build Settings

添加代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 推送 极光推送