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需要接受来自服务商提供推送消息,
- [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
2:申请发出后,如果成功,委托会自动返回一个设备令牌(toKen),如果失败,将会进入另外一个失败的委托
- //远程通知注册成功委托
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
- {
- NSLog(@"%@",deviceToken);
- self.viewController.toKenValueTextView.text = [NSString stringWithFormat:@"%@",deviceToken];
- self.viewController.pushStatusLabel.text = @"已经注册.";
- }
- //远程通知注册失败委托
- -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
- {
- self.viewController.toKenValueTextView.text = [error description];
- }
3:将设备令牌码提供给服务商,以供推送到具体的手机上面. 如果远程推送消息来了,用户点击了推送消息,或者应用已经处于打开状态,系统都会自动调用以下委托:
- //点击某条远程通知时调用的委托 如果界面处于打开状态,那么此委托会直接响应
- -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
- {
- NSLog(@"远程通知");
- [self PMD_uesPushMessage:userInfo];
- }
4: 第三点里面的介绍的情况是应用程序已经处于运行状态,上面的委托才会被执行,如果应用程序处于未启用状态,此时又需要响应消息,那么需要以下委托处理.
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- //这里处理应用程序如果没有启动,但是是通过通知消息打开的,此时可以获取到消息.
- if (launchOptions != nil) {
- NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
- [self PMD_uesPushMessage:userInfo];
- }
- return YES;
- }
5:清空通知中心已有的推送消息,只需要将指定App 的 Badge 设置为 0即可
- [[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 表示系统默认的选择列铃声
}
}";
到这里就差不多结束了.
iOS 远程推送通知 详解的更多相关文章
- “iOS 推送通知”详解:从创建到设置到运行
这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解.本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义. 介绍一点点背景资料 ...
- iOS 远程推送通知
1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...
- IOS 远程推送通知(UIRemoteNotification)
● 什么是远程推送通知 ● 顾名思义,就是从远程服务器推送给客户端的通知(需要联网) ● 远程推送服务,又称为APNs(Apple Push Notification Services) ● ...
- iOS10 推送通知详解(UserNotifications)
iOS10新增加了一个UserNotificationKit(用户通知框架)来整合通知相关的API,UserNotificationKit框架增加了很多令人惊喜的特性: 更加丰富的推送内容:现在可以设 ...
- 转:IOS远程推送通知
在ios系统中,app应用程序无法在后台完成较多的任务,仅仅允许程序做一些有限的任务(如音视频播放.地理位置信息.voip).然而,如果你想做 一些有趣的事情,并且告知用户,甚至用户没有使用你的app ...
- IOS之推送通知(本地推送和远程推送)
推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification) ...
- IOS远程推送
IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...
- iOS远程推送原理及实现过程
➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...
- iOS远程推送1
一.APNS 远程推送 1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接. 2.长连接:就是只要联网了,就一直建立连接. 3.长连接的作用:时间校准,系统升级,查找我的iPhone. 4. ...
随机推荐
- JavaScript,只有你想不到
很长时间以来,JavaScript在我眼里都是编程语言中的二等公民.早先,它经常是很多安全问题的发源地,就像是胶水一样,它能把HTML应用与样式 粘到一块,可没有人拿它来正正规规地编写程序:这样的情形 ...
- PLSQL Developer使用技巧
本文由liuyk80贡献 ·PL/SQL Developer 使用技巧 1.PL/SQL Developer 记住登陆密码 在使用 PL/SQL Developer 时,为了工作方便希望 PL/SQL ...
- Docker 生态概览
Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker 自从发布以来发生了很多的变化,并且有些 ...
- 8.1 Socket编程
8.1 Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览 ...
- 关于Apple开发者的D-U-N-S Number
企业开发者需要这个信息,中文译名叫邓白氏编码,很多攻略给的那个申请地址已经失效,这个组织官方也有地址可以提交申请资料,不过得注册,苹果目前可用的地址是:https://developer.apple. ...
- Apriori算法-频繁项集-关联规则
计算频繁项集: 首先生成一个数据集 def loadDataSet(): return [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]] 测试数据集da ...
- 第三方支付设计——自有账户支付
笔者在上一篇blog<<第三方支付架构设计之-帐户体系>>中已经稍微全面的阐述了第三方支付架构设计中的账户体系,在该体系中,其实涉及了各种各样的账户:银行侧账户(包括用户在银行 ...
- error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug
属性1. 在工程上右键->属性->c/c++->代码生成->运行库 四个选项及含义分别如下: 1.1 /MDd:MD_DynamicDebug,我理解是 "共享DLL ...
- [Micropython]TPYBoard v10x MFRC522智能门禁系统
MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.也就是射频卡. 经常忘带钥匙,最尴尬的上周竟然去开4楼的门,(家住五楼,无电梯),开了好一会没打开,事后对4楼 ...
- 【转】IE浏览器快捷键大全
一般快捷键F11打开/关闭全屏模式 TAB循环的选择地址栏,刷新键和当前标签页 CTRL+F在当前标签页查询字或短语 CTRL+N为当前标签页打开一个新窗口 CTRL+P打印当前标签页 CTRL+A选 ...