极光推送流程

阶段一:provider把要发送的消息、目的标识打包,发送给APNS

阶段二:APNS在自身的已注册Push服务的iOS设备列表中,查找响应标识的iOS设备,并将消息发送到iOS设备。

阶段三:iOS设备把发送的消息传递给相应的应用程序,并且按照设定弹出push通知。

 

a.首先是应用程序注册消息推送.

b.iOS跟APNS要devicetoken。应用程序接受devicetoken.

c.应用程序将devicetoken发送给JPush服务端程序.

d.server调用极光SDK将推送消息及相关信息发送给JPush.

e.Jpush服务端程序向APNS发送消息.

f.APNS服务将消息发送给iphone应用程序。

 

  1. 申请极光帐号,创建应用。创建后自动生成AppKey用以标识该应用,需要把它配置到项目中。
  2. 上传配推送证书.P12。开发环境显示已验证,表示上传成功。 证书ID必须与项目中的Bundle identifier一致。
  3. 导入API开发包到应用程序项目.

将SDK包解压,将解压后的lib文件夹添加到项目中。

必要的框架

CFNetwork.Framework

CoreTelephony.framework

SystemConfiguration.framework

Foundation.frmework

UIKit.framework

Security.framework

Xcode7需要的是libz.tbd;Xcode7以下版本是libz.Dylib

 

  1. 在项目中创建Push.Plist文件。

CHANNEL   指名应用程序的下载渠道。

APP_KEY 填写管理portal上创建应用后自动生成的APPkey值。确保双方一致。

5.在项目中点击点击info,找到Application requires iPhone environment 选择yes

 

APS_FOR_PRODUCTION

0表示采用的是开发者证书,1表示采用生产证书发布应用

 

 

客户端设置

开启Remote notifications  需要在xcode中修改应用的capabilities开启Remote notifications。

 

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

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

 

+ (void)registerDeviceToken:(NSData *)deviceToken;

 

 @abstract 处理收到的 APNs 消息

+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;

 

- (void)application:(UIApplication *)application

    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken ;

 

当你的iPhone收到推送信息后到底会发生什么呢?总共有三种可能性:

 

app在前台运行. 接收到推送信息时屏幕上不会有任何显示,也不会有提示音,但你的app delegate会收到这个推送信息。你可以在这里加入代码来处理接收到的信息。

app不在前台运行。iPhone可能停留在主界面或者另一个app正在运行.一个提示窗口会弹出,可能伴随着提示音。用户可以点击Close按钮来关闭这个窗口或者点击View按钮来打开你的app。如果用户点击的时Close按钮,那你的app不会处理这个推送的信息。

iPhone在锁屏状态下. 同样一个提示窗口弹出,并伴随着提示音,但是这个窗口不会有Close和View按钮。屏幕解锁后会自动进入你的app。

 

posted @ 2016-03-16 21:32  陈年瑞雪  阅读(5241)  评论(0编辑  收藏  举报