首先声明下写这个文章的目的,就是让更多人更好的了解push notificaiton 苹果的消息推送功能。(虽然网上有很多类似的文章说明,但是当自己实践起来的时候还是觉得花费了不少的时间)
在文章之前先提及以下几个概念
对照如上图我们介绍文章后面的一些概念
1、Provider: 就是对应后面介绍的 PushMeBaby工程(用来向APNS发送消息)
2、APNS: Apple_Push_Notification_Service 苹果消息推送服务器
3、iphone:用来接受APNS下发下来的消息推送
4、Client App: 对应后面提到的 PushClient 工程,安装在iphone上面的程序 (用来接收iphone传递APNS下发的消息到制定的一个客户端 app)
-------------------------------------------------------------------------------------------------------------------------------------------------------
介绍完以后几个概念以后,现在先申明下在以下的工程配置中要用到 苹果开发者帐号 去下载 aps_developer_identity.cer 然后重命名apns.cer放在 pushMeBaby工程中才可以顺利的配置好推送的一些功能。
----------------------------------------------------------------------------------------------------------------------------------------------------
现在进入正题
1、获取deviceToken
在 PushClient工程的的main.m文件中的
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
2、
4、下载 push ssl certificate 把原文件名称aps_developer_identity.cer -------->重命名为apns.cer
5、下载下来的testpush.mobileprovision配置到工程中
前期的工程配置和一些证书获取完毕以后我们要下载工程文件PushMeBaby 和 PushClient
下载地址:
http://download.csdn.net/source/3182374
下载完成以后我们要做两个事情
1、把刚才获取的apns.cer文件拷贝到pushMeBaby工程文件同级目录下,并且添加到PushMeBaby工程中
2、把 pushClient安装到真机上运行后获取 deviceToken 在gcd中可以看到打印的log 信息 如
deviceToken: <4259469e 7cb261ef 587ed067 ee4db238 4a403a06 6b9bb996 4dcdfbf8 c0cb324f>
(其实就是 push client中
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
}
中的deviceToken
)
记住然后在工程 pushMeBaby中用刚才获取的40为字符替换掉在
ApplicationDelegate.m
-(id)init
{
...
self.deviceToken = "刚才获取的deviceToken";
}
运行工程后如图
其中如图上面的Device Token就是要push的机子
然后运行pushMeBaby运行正常的话就可以看到如下的效果,APNS
常见错误信息:
1、未找到应用程序的“aps-environment”的权利字符串
最主要的一点是你的 push的程序ID不允许带通配符
具体查看
http://www.cnblogs.com/iphone-crash/archive/2011/08/25/2153301.html