iOS开发,推送消息 steps
2015-07-01 00:00
337 查看
摘要: 从理论和实践的角度来简要介绍推送开发过程中的一些细节
概述:推送过程简介
一、App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请。若注册成功,回调函数application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 会被触发,App可以得到deviceToken,该token就是一个与设备相关的字符串.
二、App获取到DeviceToken后,将DeviceToken发送给自己的服务端。
三、服务端拿到DeviceToken以后,使用证书文件,向苹果的APNS服务器发起一个SSL连接。连接成功之后,发送一段JSON串,该JSON串包含推送消息的类型及内容。
四、苹果的APNS服务器得到JSON串以后,向App发送通知消息,使得App的回调函数application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo被调用,App从userInfo中即可得到推送消息的内容。
1、前期准备
在学习推送开发之前,开发者需要两样东西,(1)、iPhone真机,因为模拟器不支持推送(2)、付费的开发者账号。
2、新建项目,选择Single View Application模板。
3、注册通知(Registration Notification)
(1)在AppDelegate文件的application:didFinishLaunchingWithOptions:方法中添加“注册推送”的代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Register for Remote Notifications
if (iOS8_OR_LATER) {
[[UIApplication sharedApplication] registerForRemoteNotifications];
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];
}
}
这样iOS操作系统就知道该应用程序将需要处理推送消息方面的内容。
通过上面的代码,iOS操作系统与苹果的APNS服务器联系,并且获得一个device token,这个device token用于区别运行该App的每一个硬件设备。这个device token是用于你自己的服务器给该设备发送推送信息,具体的实现方式就是你的服务器将device token以及需要推送的信息打包发送给苹果的服务器,然后苹果的APNS服务器负责将推送的内容分发到对应的设备。
需要了解的是device token在每一个App上面都不一样,并且在同一个App上面会因为时间改变而不同。所以苹果推荐在每一次App启动的时候将device token发送到你的服务器后台,以确保device token是最新的。
4、判断注册通知失败还是成功
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"Did Register for Remote Notifications with Device Token (%@)", deviceToken);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Did Fail to Register for Remote Notifications");
NSLog(@"%@, %@", error, error.localizedDescription);
}
5、收到通知消息,进行消息处理
如果收到了通知事件,那么UIApplicationDelegate接口中的application:didReceiveRemoteNotification将会执行,你可以在这里获取推送的信息,然后做出相应的处理。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *deviceTokenStr = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"去除device token中的空格和<>字符:%@",deviceTokenStr);//仅仅是我参与的项目中这样处理,见仁见智
}
6、制作证书,使用真机进行推送消息开发
这时候如果运行项目,那么application:didFailToRegisterForRemoteNotificationsWithError将会执行,因为模拟器不支持推送,需要制作证书,使用真机做推送开发。
7、SSL Certificate证书制作
在苹果的开发者中心,创建App Id
推送的证书必须使用精确(Explicit)的App ID,而不能使用模糊(Wildcard) App ID。
如下图所示,
勾选上Push Notifications服务,如下图所示,
然后按照创建证书的流程,使用创建的App ID,因为需要截图较多,此处不再赘述。
概述:推送过程简介
一、App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请。若注册成功,回调函数application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 会被触发,App可以得到deviceToken,该token就是一个与设备相关的字符串.
二、App获取到DeviceToken后,将DeviceToken发送给自己的服务端。
三、服务端拿到DeviceToken以后,使用证书文件,向苹果的APNS服务器发起一个SSL连接。连接成功之后,发送一段JSON串,该JSON串包含推送消息的类型及内容。
四、苹果的APNS服务器得到JSON串以后,向App发送通知消息,使得App的回调函数application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo被调用,App从userInfo中即可得到推送消息的内容。
1、前期准备
在学习推送开发之前,开发者需要两样东西,(1)、iPhone真机,因为模拟器不支持推送(2)、付费的开发者账号。
2、新建项目,选择Single View Application模板。
3、注册通知(Registration Notification)
(1)在AppDelegate文件的application:didFinishLaunchingWithOptions:方法中添加“注册推送”的代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Register for Remote Notifications
if (iOS8_OR_LATER) {
[[UIApplication sharedApplication] registerForRemoteNotifications];
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];
}
}
这样iOS操作系统就知道该应用程序将需要处理推送消息方面的内容。
通过上面的代码,iOS操作系统与苹果的APNS服务器联系,并且获得一个device token,这个device token用于区别运行该App的每一个硬件设备。这个device token是用于你自己的服务器给该设备发送推送信息,具体的实现方式就是你的服务器将device token以及需要推送的信息打包发送给苹果的服务器,然后苹果的APNS服务器负责将推送的内容分发到对应的设备。
需要了解的是device token在每一个App上面都不一样,并且在同一个App上面会因为时间改变而不同。所以苹果推荐在每一次App启动的时候将device token发送到你的服务器后台,以确保device token是最新的。
4、判断注册通知失败还是成功
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"Did Register for Remote Notifications with Device Token (%@)", deviceToken);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Did Fail to Register for Remote Notifications");
NSLog(@"%@, %@", error, error.localizedDescription);
}
5、收到通知消息,进行消息处理
如果收到了通知事件,那么UIApplicationDelegate接口中的application:didReceiveRemoteNotification将会执行,你可以在这里获取推送的信息,然后做出相应的处理。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *deviceTokenStr = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"去除device token中的空格和<>字符:%@",deviceTokenStr);//仅仅是我参与的项目中这样处理,见仁见智
}
6、制作证书,使用真机进行推送消息开发
这时候如果运行项目,那么application:didFailToRegisterForRemoteNotificationsWithError将会执行,因为模拟器不支持推送,需要制作证书,使用真机做推送开发。
7、SSL Certificate证书制作
在苹果的开发者中心,创建App Id
推送的证书必须使用精确(Explicit)的App ID,而不能使用模糊(Wildcard) App ID。
如下图所示,
勾选上Push Notifications服务,如下图所示,
然后按照创建证书的流程,使用创建的App ID,因为需要截图较多,此处不再赘述。
相关文章推荐
- javaScript中push函数用法实例分析
- jquery中push()的用法(数组添加元素)
- android中创建通知栏Notification代码实例
- Notification与NotificationManager详细介绍
- perl push的用法及子程序返回值的反思
- javascript使用数组的push方法完成快速排序
- JavaScript使用push方法添加一个元素到数组末尾用法实例
- JavaScript数组函数unshift、shift、pop、push使用实例
- android notification 的总结分析
- 简介JavaScript中的push()方法的使用
- 通过 Push 来提高移动应用的活跃度 3ff0
- Eclipse中Pull参数问题
- 基于dwr2.0的Push推送技术详细解析以及实例
- Android 通知栏Notification的整合 全面学习
- android Notification 的使用
- Notification消息管理
- iOS 如何选择delegate、notification、KVO?
- 将在本地创建的Git仓库push到Git@OSC
- Fail to push agent from Primary site to client machine
- IOS 消息机制(NSNotificationCenter)