zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    JavaScript中严格模式"use strict";需注意的几个雷区:
    React 学习,需要注意几点
    安装了VS2012 还有Update4 我的Silverlight5安装完后 我的Silverlight4项目打不开
    SilverLight抛出 System.InvalidOperationException: 超出了2083 的最大URI
    Dictionary集合运用
    配置OpenCV开发环境心得
    调用第三方库出现的问题
    7-19 答疑课小结
    工欲善其事必先利其器(篇一)
    VMware Ubuntu Kaldi
  • 原文地址:https://www.cnblogs.com/zhwl/p/2844558.html
Copyright © 2011-2022 走看看