ios开发: APNS消息推送实现

网上关于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。


PHP环境的推送代码参见另一篇博文:【撰写中】


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值