iOS开发——远程通知,远程推送(RemoteNotification)

  iOS中的远程通知,也叫远程推送,使用频率非常频繁,它主要是通过苹果apns服务器主动发起找到被推送的设备,把信息传达给用户,如果对应程序没有正在运行,那么远程通知就会先到通知中心,展示在通知栏上面,这里记录下我使用远程通知的几个步骤。

一、创建推送证书。

  推送证书的创建非常简单,跟创建开发证书类似。

  1. 创建APP ID,勾选Explicit App ID也就是明确的ID,这样才能勾选使用下面的Push Notification。

  

  然后直接一路到complete即可。

  2. 创建推送证书,推送证书有两种,一种是开发环境(Sandbox),一种是生产环境(Production),两种证书对应APP不同的运行状态,这里我们测试使用Sandbox,下面是创建步骤。

在Development中选择Sandbox,继续下一步。

这里他会主动匹配一个勾选了推送服务的APP ID列表,选中刚才创建的APP ID

这里让我们本地创建一个CSR文件来生成我们的证书

创建CSR证书需要进入钥匙串,然后如上图选择

点击继续,然后选择创建的位置就可以得到CSR文件

  CSR文件创建成功后回到证书创建这边来,下一步到这个位置,Choose File选中刚才创建的CSR文件,然后下一步即可创建证书,然后下载点击打开即可。

  这样一个开发环境的推送证书就算是创建完成了。

二、代码处理。

  证书创建完成之后,我们需要去工程AppDelegate.m里面加入注册,处理推送的代码,如下:

  1. didFinishLaunchingWithOptions里面注册远程推送。

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2
 3     // 注册通知
 4     [self registerRemoteNotification];
 5
 6     return YES;
 7 }
 8
 9 /**
10  *  注册远程通知
11  */
12 - (void)registerRemoteNotification
13 {
14     UIApplication *application = [UIApplication sharedApplication];
15     // iOS8注册APNS
16     if ([application respondsToSelector:@selector(registerForRemoteNotifications)]) {
17         [application registerForRemoteNotifications];
18         UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
19         UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:notificationTypes categories:nil];
20         [application registerUserNotificationSettings:settings];
21     }
22     // iOS8之前注册APNS
23     else
24     {
25         UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeBadge |
26         UIRemoteNotificationTypeSound |
27         UIRemoteNotificationTypeAlert;
28         [[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
29     }
30 }

  2. 实现其他一些相关方法。

 1 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
 2 {
 3     [application registerForRemoteNotifications];
 4 }
 5
 6 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
 7
 8     NSLog(@"deviceToken - %@", deviceToken);
 9 }
10
11 // 看官方的文档的注释,iOS7后实现这个方法后,就可以不用在 didFinishLaunchingWithOptions 和 didReceiveRemoteNotification 里面分别接受推送信息了,这一个方法可以搞定,测试有效。
12 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
13
14     [self dealRemoteNotificationWithUserInfo:userInfo];
15     completionHandler(UIBackgroundFetchResultNewData);
16 }
17
18 /**
19  *  处理远程通知
20  *
21  *  @param userInfo 通知内容
22  */
23 - (void)dealRemoteNotificationWithUserInfo:(NSDictionary *)userInfo {
24
25     UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"收到推送" message:nil preferredStyle:UIAlertControllerStyleAlert];
26     [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];
27     [[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentViewController:alert animated:YES completion:nil];
28     NSLog(@"receive remoteNotification - %@", userInfo);
29 }

  以上即是代码需要处理的部分。

三、推送测试。

  推送测试,这里推荐使用PushMeBaby,简单好用,而且全程只需要Xcode,教程在这里:http://www.cnblogs.com/leotangcn/p/4971814.html

Demo地址:https://github.com/LeoTangCN/RemoteNotificationDemo

以上即是本次分享,多谢观看!

时间: 2024-08-09 02:05:21

iOS开发——远程通知,远程推送(RemoteNotification)的相关文章

iOS开发——iOS10升级极光推送SDK、友盟分享SDK

前不久升级了Xcode8 ,同时iOS10系统也推送久. 由于公司需要适配iOS 10系统,同时第三方sdk建议升级. 包含替换升级新的SDK和相应的代码修改. 主要分享如何升级极光推送SDK,友盟分享SDK和升级过程中的遇到的报错 一. 升级极光推送SDK,有一篇不错的博客,代码变更也写的挺详细就不在多写, 遇到的编译报错见第三部分 http://blog.csdn.net/cloud_pro/article/details/52574637 二. 升级友盟分享SDK到目前最新版5.2.1(升

iOS开发之功能模块--推送之坑问题解决

苹果开发证书中,有一个根证书,根证书可以绑定相关的开发者设备合作开发一个app项目,如果是多人团队一般根证书是由老大搞定和统一管理我们的设备,这时候老大他会用到他电脑的keychain来生成P12文件,然后并把根证书一并给我们用. 但是,开发苹果推送功能的人不一定是老大,比如老大交给我来弄这个推送证书并给app添加推送功能,而生成苹果的推送cer后缀的证书,就当然在我的电脑生成了,当然肯定要通过老大用的那个开发者账号登录苹果官网,并且要下载和app同一个bundle ID一致的推送证书: 下载好

ios开发之-本地推送通知

不多说直接上代码 #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after

iOS 注册本地通知(推送)

注:按Home键让App进入后台运行时,方可查看通知. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // 注册本地通知 UILocalNotification *localnotifit = [[U

iOS开发中的远程推送实现(最新,支持iOS9)

我的个人项目<丁丁印记>中加入了远程推送功能,按照操作说明去做还是比较容易实现的,但是学的不够不系统,因此这篇文章希望总结一下最新的iOS推送功能,因为iOS8之后的推送和致之前的版本是有所不同的,也希望想能帮助到需要的朋友.这篇文章将从零开始,向大家介绍远程推送功能的原理和使用. 什么是远程推送通知 顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services). 为什么程序中需要远程推送功能 1.传统

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

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

iOS开发中通知(Notification)快速入门及推送通知实现教程

iOS开发中通知(Notification)快速入门及推送通知实现教程 标签: NSNotificationCenterNSNotification 2016-11-14 00:18 232人阅读 评论(0) 收藏 举报  分类: iOS(400)  转载自:http://www.111cn.NET/sj/ios8/90190.htm 通知(Notification)是开发框架中观察者模式的一种实现方式,内部的实现机制由Cocoa框架支持,通常用于试图控制器和数据模型的交互.通过通知,可以向一个

iOS开发--本地通知与远程通知

iOS开发--本地通知与远程通知 作者 雷潮 关注 2016.02.01 00:18* 字数 1921 阅读 8898评论 1喜欢 41 这里是指推送通知跟NSNotification有区别: 1.NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的2.本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消息,让用户知道App内部发生了什么事情. Paste_Image.png iOS常用通知 1.本地推送通知

iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

iOS开发系列--通知与消息机制--转

来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何