• iphone 推送服务Apple Push Notification Service


    标注:APNs 苹果推送服务器
    Device 安装带有推送服务程序的iPhone手机
    Provider 程序服务器,把需要推送的信息发给 APNs
    DeviceToken  
    在Device第一次连接APNs时,由APNs生成的经过加密的连接认证信息。在以后的连接中,无论时Provider到APNs还是APNs到Device 都需要 DeviceToken作为认证。
    Payload  需要推送的消息的主体内容。alert-alert消息的消息体,按键标题等badge-显示在程序icon右上角的数字,sound-声音提示文件的文件名,该声音资源文件要在程序包中。

    整体流程大体分为五个步骤:
    1: 
    Device --> 连接-->  APNs  获取 DeviceToken 
              2: Device -->连接-->  Provider 提供DeviceToken 
                                                  
    3: 
    Provider侦测需要push的消息生成Notification信息

    4:  Provider侦把要push的消息推送到APNs
    5:   APNs把该消息推送到手机

    使用方法:
    为了获取deviceToken
    第一步:获取认证书Certificates.p12   [注释:.p12 文件,文件名可以随便取]
    Certificates.p12 认证书 是用于服务器与APNs服务器SSL 连接时的认证,而获取p12的前提是获取APNs Assistant

    1:每个程序都要在apple开发中心生成  
    App ID. 

    2:单击app id 的后面的 
    Configure 

    3:在新的页面中,勾选
    Enable Push Notification Services , 而后点击Configure ,随后出现APNs Assistant,APNs助手会引导生成你的程序与APNs服务器进行SSL连接的认证书App ID specific Client SSL certificate[注释:一般文件名为“aps_developer_identity.cer” 可修改]

    4:APNs助手会引导你保存SSL certificate到你的硬盘,保存好后双击,安装到你的keychain

    5:  执行完以上四步,可以点击Done,关闭APNs助手。

    6:启动Keychain Access程序,查看刚才安装的认证,name 为apple Development/Production  push Services。。。 
    导出--即获得Certificates.p12 保存好给Provider 服务器使用


    第二步:iPhone 端
    iPhone provisioning  以开启了PUSH功能App ID 生成相应的provisioning。

    iPhone需要用到的方法函数如下:

    //注册启用 push
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge /*|UIRemoteNotificationTypeSound*/)];

    //用该判断 程序是不是通过push消息启动的
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    //iPhone 从APNs服务器获取
    deviceToken后激活该方法
    - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

    //注册push功能失败 后 返回错误信息,执行相应的处理
    - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err



    注意:
    deviceToken的处理
    [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]

    调测试方法:
    Device
    调试运行iPhone端程序,以获取deviceToken 为成功标志。

    Provider
    网上有个共开发测试的Provider程序:
    PushMeBaby
    使用的方法是,
    1;拷贝注册获取的SSL certificate文件【.cer文件】重命名为 apns.cer 添加到PushMeBaby资源文件夹中
    2: 运行,输入 iPhone端获取的deviceToken
    3: 推送
    以Device 程序获得相应消息为成功标志。

  • 相关阅读:
    拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
    拓端tecdat|R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
    拓端tecdat|R语言聚类有效性:确定最优聚类数分析IRIS鸢尾花数据和可视化
    拓端tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
    【拓端tecdat】R语言用Hessian-free 、Nelder-Mead优化方法对数据进行参数估计
    springcloud之zuul网关服务并携带头信息转发token
    windows环境搭建Vue开发环境
    JVM之top+jstack分析cpu过高原因
    JVM调优之jstack找出最耗cpu的线程并定位代码
    用自顶向下、逐步细化的方法进行以下算法的设计: 1. 输出1900---2000年中是软黏的年份,符合下面两个条件之一的年份是闰年:
  • 原文地址:https://www.cnblogs.com/greywolf/p/2693406.html
Copyright © 2020-2023  润新知