昨天虽然配置APNS成功,但对它的原理并并不是很清楚。
今天翻了一下Erica Sadun的cook book,发现专门有一章是讲这个的,对它的来龙去脉讲得比较清楚
。笔记一下。
“通过APNS推送通知需要3个条件:SSL证书,设备ID和要发送的通知得自定义有效内容。”
”一个令牌与一个设备关联。设备令牌是作为注册的副产品而创建的。接受到注册请求后,ios即刻联络APNS并等待其返回一个设备令牌。APNS构建设备令牌并将其返回到ios。应用程序通过委托回调
-(void)application:(UIApplication *)app didRegisterForRemoteNoti ficationsWithDeviceToken :(NSData *)deviceToken 获得设备令牌
“。
“只有应用程序得到一个设备令牌并将其发送到服务器后才能接收推送消息。应用程序必须将设备令牌发送到推送实际通知得外设备”。
“通知的有效内容必须包括一个aps字典,定义要发送给用户的声音,标志和警告得属性。自定义数据字典限定在256B以内。通知内容可转化为JSON格式”。
主要是根据cocoachina的
这篇文章
配置的,过程还算顺利。但还是有些要注意的地方
,记录一下。
因为我已上线过app,所以“app开发基础设置”这个步骤可以省去,直接进行“
Push Notification service设置"这部分,申请一个
App ID,这个
App ID不能带wild card,即不能带通配符*之类的,必须是一个具体的
App ID,比如com.abc.apns01。
下载ps_developer_identity.cer并双击导入到Key Chain后,如果在我的证书(
My certificates)下找不到Apple Development Push Services,不用慌,重启Key Chain即可看到。
Build and Run之前,确保
Build > Code Signing > Code Signing Identifier > Any iPhone OS Device是刚才配置apns provision的,并且Bundle identifier要与刚才申请时的匹配。要连接真机才能测试运行。
运行后如果出现“未找到应用程序的“aps-environment”的权利字符串”这样的提示,不妨重启Xcode试试看。
英文不差的话可以看看
这篇文章,有图有真相。