zoukankan      html  css  js  c++  java
  • iOS 远程推送通知 详解

    1: ios本地通知和远程通知

    http://wangjun.easymorse.com/?p=1482

    2: 苹果远程通知服务申请激活例图 (外国佬写的.)

    http://mobiforge.com/developing/story/programming-apple-push-notification-services

    3:书籍参考:iPhone 开发秘籍 第16章 推送通知.

    好了,进入正文:

    首先是申请证书的网址

    https://developer.apple.com/ios/manage/overview/index.action

    登录成功以后,进入iOS 配置管理的 主页面.

    第一步操作是去 创建一个新的App IDs创建成功后,会需要提供安全证书来激动推送服务,如下图:

    选择存储到磁盘以后,生成一个文件名称为(简称CSR): CertificateSigningRequest.certSigningRequest

    回到Apple页面 将这个提交并提示激动成功.

    激活成功后的App  IDs 提供下载 开发版或是发布版的主动推送证书(aps_development.cer),如果需要做服务器方面的主动推送的话,就必须要下载这个文件来使用推送服务了.

    第二步要为App提供接受推送许可的证书,点击Provisioning进行设置,添加一个新的许可,选择刚刚新创建的App IDs. 再选择可以调试的iPhone 设备.

    最后,同样是下载下来: YsyPushMessageDemo.mobileprovision双击该证书,让其加载一次.

    接下来,进入iOS工程,选择使用该证书来调试.

    红圈中,全部设置刚刚加载的许可证书.

    那么到这里,关于证书类的 准备工作,已经全部准备就绪.

    在这里再此强调一次,每个文件的具体作用

    1: CertificateSigningRequest.certSigningRequest : 为生成App IDs 而用

    2: aps_development.cer 为开发主动推送服务而用到的证书

    3: YsyPushMessageDemo.mobileprovision 为App 接受推送通知的许可服务

    主动推送的Push 代码 及使用,请参考一开始介绍的第一篇博客

    这里只附上下载地址: https://github.com/stefanhafeneger/PushMeBaby

    接下来,说说收到推送通知代码方面.

    1:申请本App需要接受来自服务商提供推送消息,

    [csharp] view plaincopy
    1. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];  


    2:申请发出后,如果成功,委托会自动返回一个设备令牌(toKen),如果失败,将会进入另外一个失败的委托

    [csharp] view plaincopy
    1. //远程通知注册成功委托  
    2. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken  
    3. {  
    4.     NSLog(@"%@",deviceToken);  
    5.     self.viewController.toKenValueTextView.text = [NSString stringWithFormat:@"%@",deviceToken];  
    6.     self.viewController.pushStatusLabel.text = @"已经注册.";  
    7. }  
    8. //远程通知注册失败委托  
    9. -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error  
    10. {  
    11.     self.viewController.toKenValueTextView.text = [error description];  
    12. }  


    3:将设备令牌码提供给服务商,以供推送到具体的手机上面. 如果远程推送消息来了,用户点击了推送消息,或者应用已经处于打开状态,系统都会自动调用以下委托:

    [csharp] view plaincopy
    1. //点击某条远程通知时调用的委托 如果界面处于打开状态,那么此委托会直接响应  
    2. -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  
    3. {  
    4.     NSLog(@"远程通知");  
    5.     [self PMD_uesPushMessage:userInfo];  
    6. }  


    4: 第三点里面的介绍的情况是应用程序已经处于运行状态,上面的委托才会被执行,如果应用程序处于未启用状态,此时又需要响应消息,那么需要以下委托处理.

    [csharp] view plaincopy
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
    2. {  
    3.     //这里处理应用程序如果没有启动,但是是通过通知消息打开的,此时可以获取到消息.  
    4.     if (launchOptions != nil) {  
    5.         NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];  
    6.         [self PMD_uesPushMessage:userInfo];  
    7.     }  
    8.     return YES;  
    9. }  

    5:清空通知中心已有的推送消息,只需要将指定App 的 Badge 设置为 0即可

    [csharp] view plaincopy
    1. [[UIApplication sharedApplication ] setApplicationIconBadgeNumber:0];  


    6:主动推送的字符串必须符合如下Json数组的格式,才能正确推送到手机当中.

        @"{

           //自定义参数

           "userinfo":

                  {

                     "name":"remote notice"

                  },

           //标准写法

           "aps":

                  {

                     "alert":

                               {

                                  "action-loc-key":"Open",//支持多语言

                                  "body":"messgae content"//消息正文

                               },

                     "badge":1,//为App 的icon  标记 具体数值

                     "sound":"default" //播放的音频文件,default 表示系统默认的选择列铃声

                 } 

         }";

    到这里就差不多结束了.

  • 相关阅读:
    Visifire正式版(v1.1)发布
    [转]PSP机能强大!已能模拟运行WINDOWS系统?
    在Silverlight+WCF中应用以角色为基础的安全模式(一)基础篇之角色为基础的安全模式简介 Virus
    C#的加密解密算法,包括Silverlight的MD5算法 Virus
    MMORPG programming in Silverlight Tutorial (10)Implement the sprite’s 2D animation (Part IV)
    Game Script: Rescue Bill Gates
    MMORPG programming in Silverlight Tutorial (9)KeyFrame Animation
    MMORPG programming in Silverlight Tutorial (5)Implement the sprite’s 2D animation (Part II)
    MMORPG programming in Silverlight Tutorial (7)Perfect animation
    MMORPG programming in Silverlight Tutorial (3)Animate the object (Part III)
  • 原文地址:https://www.cnblogs.com/hjltonyios/p/5015608.html
Copyright © 2011-2022 走看看