APNS推送
APNS实现的相关基础内容
-
(A+++)官网解读(中文):
-
客户端推送
准备工作:
* 开发阶段: 需要一个开发阶段类型的推送证书生成 push.cer 和 push.p12 一个开发阶段类型的 dev.cer 一个配置文件 dev_profile.mobileprovision (对应的app id 不可带通配符) * 发布阶段: 需要一个发布阶段类型的推送证书生成 dis_push.cer 和 dis_push.p12 一个发布阶段类型的 dis.cer 一个配置文件 dis_profile.mobileprovision (对应的app id 不可带通配符)
-
推送消息内容
{"aps":{"alert":"This is a test message zd","badge":0,"sound":"default"}}
badge:自动根据推送的badge设置applicationIconBadgeNumber
sound:定制推送声音类型
苹果的apns限制了pyload字段只能≤256个字节
-
如何使用本地制定的推送声音
-
模拟服务器端tool:
-
相关文章
(A++) http://blog.csdn.net/kepoon/article/details/22672133
-
error
APNS一些疑问
-
接到推送后有声音
锁屏 - 有
后台 - 有 (锁屏不锁屏都有)
运行 - 没有 (锁屏有,不锁屏没有)
关闭 - 有 (锁屏不锁屏都有)
运行收到的推送系统交由开发者自行处理,不做任何操作(没有系统提示因);其他有系统提供提示都有声音。
-
判断是否是从推送打开的
-
可根据 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions{}方法,启动的时候launchOptions是否包含推送的消息来判断是否是从推送打开的。
-
UIApplicationLaunchOptionsRemoteNotificationKey
远程推送
-
UIApplicationLaunchOptionsLocalNotificationKey
本地推送
BOOL isOpenFromRemoteNotify = NO; BOOL isOpenFromLocalNotify = NO; NSArray * allKey = [launchOptions allKeys]; if ([allKey containsObject:UIApplicationLaunchOptionsRemoteNotificationKey])//判断是从远程推送打开的吗 { isOpenFromRemoteNotify = YES; } else if ([allKey containsObject:UIApplicationLaunchOptionsRemoteNotificationKey])//判断是从本地推送打开的吗 { isOpenFromLocalNotify = YES; }else{ //不是从推送打开的 }
-
-
-
APNS是怎么确定向那个设备上那个应用推送的呢
客户端、后台、苹果APNS服务器 是通过deviceToken作为某一设备上某一应用的标识,通过这个标识确定推送推给那个设备上的那个应用的。
应用每次重新启动,向苹果APNS服务器注册一次推送,苹果APNS服务器就会向应用下发在当前设备下当前应用deviceToken,如有更新,需告知我们的服务进行更新。
在同一设备上的不同应用的deviceToken是不同的。
-
什么是deviceToken
deviceToken 和 UDID 不一样,它是苹果专门为推送生成一个
-
APNS 下发的deviceToken 的生命周期
deviceToken由苹果管理,注册一个次后无论关闭应用,删除应用再次注册都不会改变,
-
app端每次启动都要注册吗?
不是每次都需要注册,只需要注册一次,获得deviceToken,根据下发的deviceToken,不注册依然可以接受到推送。
-
一个应用一个设备注册后deviceToken会改变吗?(udid 和 app id 确定情况下)
答案是会改变,什么时候改变呢?
参考:http://stackoverflow.com/questions/6652242/does-the-device-token-ever-change-once-created
From Apple Documentation ApplePushService
The form of this phase of token trust ensures that only APNs generates the token which it will later honor, and it can assure itself that a token handed to it by a device is the same token that it previously provisioned for that particular device—and only for that device. If the user restores backup data to a new device or reinstalls the operating system, the device token changes.
- 还原系统到新的设备、重装系统的时候会改变
-
deviceToken生成规则?(苹果不知道有没有公开:估计没有,也不会公开)