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 表示系统默认的选择列铃声

}

}";

到这里就差不多结束了.

时间: 2024-10-25 15:32:03

iOS 远程推送通知 详解的相关文章

IOS之推送通知(本地推送和远程推送)

推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification):手机应用本身的通知,比如:闹铃 远程推送通知:(Remote Notification)从服务器发送过来的通知 推送通知的作用:让不在前台运行的App,告知用户App内部发生了什么事情.比如我们正在聊微信,突然界面上面出现了黑色半透明横幅(QQ好友给你发送的消息)这就是一个推送通知. 推送通知的呈

IOS远程推送

一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上. 推送的新消息可能是一条信息.一项即将到期的日程或是一份远程服务器上的新数据.在系统上展现的时候,可以显示警告信息或

远程推送通知

什么是远程推送通知 就是从远程服务器推送给客户端的通知 此操作需要联网 远程推送服务 又称为APNs (Apple Push Notification Services) 为什么需要远程推送通知? 传统获取数据的局限性: 通过上图可以看到,张三如果想要发送消息给李四 首先需要向服务器发送一条消息,然后由服务器将消息推送给李四 反之一样 但是有一个问题就是:如果张三要给李四发送消息必须先发送给服务器 服务器再推送给李四 也就是说李四要正确收到张三发送的消息 就必须和服务器建立一个长连接,但是假如李

iOS远程推送原理及实现过程

推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题.那么首先让我们准备一些做推送需要的东西.我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.然后下载证书,供我们后面使用,详细的证书配置过程,我们下面再说. 首先我们要说说iOS推送通知的基本原理: 苹果的推送服务通知是由自己专门的推送服务器AP

(七十三)iOS本地推送通知的实现

iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法. ①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册: if ([[UIDevice currentDevice].systemVersion doubleVa

用C#完成Swift远程推送通知

IOS的信送简单就是在开开发者管理门户中创建推送证书,然后生成服务器推送证书(服务端代码可以是任意的,我们采用C#来写),App中嵌入推送代码,App安装后允许推送后就可以收到服务端的推送消息了,关于更进一步的原理说明,可以查看官方文档. 前提是你已经开通购买了apple的开发者帐户,并且已经有开发证书,能正常创建运行项目到你的iphone上了,如果以前条件不具备,请先参完成以上步骤. 导出证书 打开Mac系统的"钥匙串访问"-"证书助理"-"从证书颁发机

推送原理解析 极光推送使用详解

推送原理解析 极光推送使用详解 原军锋 12016.09.22 18:10:07字数 5,705阅读 19,494 推送技术产生场景: --服务器端主动性: 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; --数据实时性: 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; --基本原理: 使客户端实时获取服务器端消息, Pull 方式, 小周期轮询, 费电费流量; 另一个就是 Push 方式

使用【百度云推送】第三方SDK实现推送功能详解

之前介绍过如何使用shareSDK实现新浪微博分享功能,今天介绍如何使用百度云推送SDK实现Android手机后台推送功能. 运行效果如下 第一步,如果使用百度的SDK,当然要先成为百度的开发者啦,这个就不详述了.成为开发者之后,我们要建立一个应用,如下图所示 第二步,创建好应用之后,我们点击开方者服务管理,进入工程管理页面,然后点击左侧云推送,进入云推送功能页面,具体如下图 进入云推送详细页面之后,我们点击推送设置,设置好我们的应用的包名,然后点击快速实例,将系统给我们产生的示例代码下载下来

iOS-推送通知详解

这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解.本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义. 介绍一点点背景资料 众所周知,使用推送通知是一个很棒的.给应用添加实时消息通知的方式.这样做的结局是,开发者和用户之间,彼此永远保持着一种令人愉悦的亲密关系. 然而不幸的是,iOS的推送通知并非那么容易驾驭,往往会搞的开发者精疲力尽,灰心丧气,无法持久.现在,救星来了!只要通读本教程,你就能摆脱这些烦恼,成为一名活力