zoukankan      html  css  js  c++  java
  • 极光推送流程

    阶段一: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。

  • 相关阅读:
    良许 | 同事的一个动作,让我熬夜的工作全部白费……
    良许 | 命令的输出不会保存?居然连 tee 命令都不会用!
    良许 | 从命令行同时移动多个文件类型的小技巧
    良许Linux | Linux学习方法及学习资料汇总
    JAVA基础篇 之 方法的重载
    Spring学习笔记(八)Spring Data JPA学习
    java基础篇 之 位运算符
    Spring Cloud Stream学习(五)入门
    SpringCloudStream学习(四)TTL(存活时间)Dead Letter Exchanges(死信交换机)
    SpringCloudStream学习(三)RabbitMQ中的惰性队列
  • 原文地址:https://www.cnblogs.com/YaLongblogs/p/5285273.html
Copyright © 2011-2022 走看看