IOS消息推送

网上关于ios消息推送机制(APNS)的实现、原理介绍很多,但都零零散散。

昨天经过自己的多番尝试,终于成功实现了推送过程。

在此,贴上自己整理的印象笔记内容,包括自己实现过程中受益的内容链接,和遇到点呃问题及解决方法。

php下的推送实现参见另一篇博文:【正在撰写中】


1.APNS原理、配置开发者账户以开启APNS服务、获取发送消息的认证证书的实现。(文章末尾的链接质量低劣,不建议阅读)

http://mmz06.blog.163.com/blog/static/121416962011111710934946/


2.手机端获取token的代码实例下载【在此之前,需要参照上文步骤,激活appid的apns功能】

http://www.cocoachina.com/bbs/job.php?action-download-pid-tpc-tid-3770-aid-3022.html


实现过程中,屡屡遇到Error:

Error: Error Domain=NSCocoaErrorDomain Code=3000 UserInfo=0x1179f0 "未找到应用程序的“aps-environment”的权利字符串"

原因是工程中的profile不正确。

解决办法:

     确认你在apple dev portal里面把相应appid做成类似com.company.appname这样子(如果是xxxx.*则可能匹配错误等),激活pans功能后,再revoke这个profile,并下载安装到手机和xcode里面去(这里要注意,一定要先把push的功能在configure里面配置好了然后再download这个profile,更新手机和Xcode,如果你记不清楚了到底是先download还是先configure的,那么一个最保险的办法就是先configure好了,然后到profile那里点击modify,把profile改成一个新的名字,把这个新的profile安装到手机和Xcode里面,这样就没有问题了)

    笔者在这个问题上花了大半天时间,根据后来成功实现后的总结,原因在于没有一个干净的测试环境。如果你觉得自己按照以上方法执行后,问题依旧,很大的可能性是并没有完全的依照以上步骤来执行。


3.消息发送端的代码实例 PushMeBaby:【需要参照上文步骤,在开发机生成钥匙对,并获得APNS的证书,置于消息发送的工程中】

http://dldx.csdn.net/fd.php?i=125637639879612&s=76d8ea9a7077833aaf4aa3c705cdda26

记得将制作证书时生成的.cer文件替换到项目中(当然要替换下代码中.cer的文件名啦~),并替换代码中的devicetoken为之前手机获得的token。


笔者的电脑装的是Mount Lion 10.8.2, 64位机。运行如上程序时,报错:

The run destination My Mac 64-bit is not valid for Running the scheme 'PushMeBaby'.

解决办法:

     修改项目的PROJECT和TARGET的BUILD SETTING中的architecture为64位,base sdk为10.8,clean后重新运行,则OK。


你可能感兴趣的:(IOS消息推送)