• ios开发: APNS消息推送实现


    网上关于ios消息推送机制(APNS)的实现、原理介绍很多,但都零零散散。
    昨天经过自己的多番尝试,终于成功实现了推送过程。
    在此,贴上自己整理的印象笔记内容,包括自己实现过程中受益的内容链接,和遇到点呃问题及解决方法。
    php下的推送实现参见另一篇博文:【正在撰写中】

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

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

    实现过程中,屡屡遇到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的证书,置于消息发送的工程中】
     记得将制作证书时生成的.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。

  • 相关阅读:
    从员工到总监,你要明白的8个道理!
    IT民工2013的升迁
    你会对老板说这十句傻话吗
    BIO
    同步工具类
    NIO(一)
    Lock与Condition
    forkJoin
    线程池与Future
    今天需要获取一个网站的web服务反馈回来的数据,找到份不错的帖子关于WebClient类的使用,记录下来·
  • 原文地址:https://www.cnblogs.com/zhwl/p/2844558.html
Copyright © 2020-2023  润新知