Apple推送通知(三)开发
前言
经过了前面的准备,我们在这一篇中终于是要开始接触代码了,首先我是一个Objective-c
语言的支持者,所以下面会使用Objective-c
语言来组织代码。
Json数据
我们想要收到的消息是以JSON格式提供的,类似于下面这样:1
2
3
4
5
6
7{
"aps":{
"alert": "Hello, world!",
"sound": "default"
"badge": "2"
}
}
注册deviceToken
首先我们需要在我们的项目中添加注册设备的deviceToken
的方法:这一点在iOS 7和iOS 8中略有差异。在iOS 8以后官方SDK中新增加了一个类UIUserNotificationSettings
,将APNS
注册设备的设置封装了起来,并提供了更好的支持。
在iOS 8以下的SDK中,我们使用下面的注册方式:
1 |
|
但是在iOS 8以后的SDK中,就需要使用下面的注册方式:
1 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { |
获取deviceToken
当app运行以后,就可以在下面的方法中接收到APNS
返回的设备的deviceToken
:我们就可以在下面的方法中,把接收到的deviceToken
发送注册到自己的Server上(需要Server端提供api)
1 | -(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ |
1 | -(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { |
点击通知
当APNS
消息推送过来的时候,通过点击消息就可以触发下面的方法,在iOS 7和iOS 8不同的SDK中也会不同,iOS 8之前是:
1 | -(void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo { |
而在iOS 8之后的SDK中是:
1 | -(void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchComplet ionHandler:(void (^) (UIBackgroundFetchResult))completionHandler{ |
我们通过在上面的回调方法中加入自己的逻辑,就可以很好的通过Apple推送通知来增强用户体验。