• 推送总结(重要)


    关于应用推送的一些总结

     

    推送通知详解

    http://lutaf.com/91.htm

    http://www.cnblogs.com/menghe/archive/2012/02/20/2359278.html

    http://www.cocoachina.com/bbs/simple/?t102110.html

    http://xiaolv154.blog.163.com/blog/static/1733641632012129115730396/

    http://blog.sina.com.cn/s/blog_560193a80100w8xr.html (很重要哦)

     

    关于推送发布的一些流程(重要)

    http://blog.csdn.net/silencetq/article/details/8115501

     

    我们的应用如果要用到推送,肯定是需要push证书,而这个时候我们需要注意,证书分为两种,一个是Development 证书,一种是Production 证书,这个时候,你得注意,在你发布应用到appstore的时候,就一定要改为Production的证书。

    我这里只大致写下怎么将p12格式的证书转换成pem的证书,这个pem文件是要给服务器用的。

     

    前面应该已经生成了三个文件,(这里是以production证书为例)

    ~1.aps_production.cer(开发者网站生成)

    ~2.PushChat.p12(匹配开发者账号,在钥匙串里面导出)

    ~3.配置文件mobileprovision

     

    1.openssl x509 -in aps_production.cer -inform DER -out aps_production_identity.pem -outform PEM

    2.openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChat.p12 (JAVA,.Net服务器需要文件)

    3. cat aps_production_identity.pem PushChatKey.pem > ck.pem (PHP服务器需要此文件)

     

    这里需要注意的是改变颜色的部分,这是需要更改成你的明明的地方,其他的就可以完全套用。

    第一步的含义是将.cer的文件转换为.pem

    第二步的意思是将.p12转换为.pem

    第三步是将前面两个步骤生成的.pem文件再合成一个pem文件,这就是我们最后需要的结果

     

    第二步需要补充一下的是,当你将该语句输入确定之后,会根据你每一步的确定出现

     

    Enter Import Password:  这个是让你输入生成.p12文件时候的密码

    MAC verified OK这是提示信息,正确的话会出现这个

    Enter PEM pass phrase:  这句话的含义是输入一个加密密码

    Verifying – Enter PEM pass phrase:  这是确认加密密码

     pass phrase 可以不用输入,这个时候生成的p12就默认没有私钥

    OK了

     

    下面这句是用于验证是否成功的

    telnet gateway.sandbox.push.apple.com 2195

     

    成功后出现的提示应该如下

     

    Trying 17.172.232.226…

    Connected to gateway.sandbox.push-apple.com.akadns.net.

    Escape character is ‘^]’.

     

    注意:当cer证书导入到电脑的时候,没有自动生成专用密匙的话,应该是当前使用的电脑不是之前申请的电脑,这个证书要之前生成的电脑才能正常用

     

    ********************************************************************************

    关于更换PUSH证书的问题

    http://blog.csdn.net/silencetq/article/details/8023952

     

     

    我原本已经有成功安装一个push证书,并且正常使用。

    可是当我有需求需要更换另外一个push证书的时候,问题出现了。

    我的操作是这样:

    我直接到苹果官网,登录我的开发者账号,然后重新创建了一个App IDs,然后根据App IDs 创建了一个新的Provisioning,然后我在xcode的Organizer界面刷新了一下,然后新的证书就出现了。

    这个时候我连接上我的设备,然后将我新创建的证书拖拉到设备里。然后我更改了xcode里面的Code Sigining的证书选择以及.plist文件中的Bundle identifier.此时运行,发现没报错,但是当我获取设备号的时候,就一直提示

    Code=3000 "未找到应用程序的“aps-environment”的权利字符串" 这个错误

    然后我开始根据这个错误搜索一些解决方案。很多说重启设备,重启xcode的方法试过,完全没用。中间折腾很多次,最后成功,成功的操作是这样:

    首先把设备里面有push的证书删除,然后去苹果官网重新创建一个Provisioning,然后加入设备,把xcode里面的相关证书以及identifiter修改成你现在的证书,然后关掉xcode。注意,这里的关闭是需要结束进程的。

    重启后,运行,发现有一个错误

    Code Sign error: Provisioning profile ‘XXXX’ can't be found

    解决这个错误的操作是如下:

    1.完全关闭xcode,找到项目文件XXXX.xcodeproj ,右键,显示包内容。重新打开一个文件夹

    2.打开该文件夹里面的project.pbxproj,并且在这找到你之前证书的编码信息,例如报错是:Code Sign error: Provisioning profile '37D44E7F-0339-4277-9A82-C146A944CD46',所以我用查找的方式找到了所有包括37D44E7F-0339-4277-9A82-C146A944CD46的行,并且删除

    然后重启xcode,再运行,就成功了。

     

    这里有点得注意,所谓push证书,跟普通证书的不同在于,它激活了push功能。这个push功能需要你从钥匙串里面请求一个证书,然后导出,最后上传到苹果官网,然后才可以激活。这里不详细描述了。push证书的identifiter的不能带.*

  • 相关阅读:
    【H5】ie8如何兼容html5标签(hack)
    mysql数据库:分表、多表关联、外键约束、级联操作
    mysql数据库:mysql初识
    mysql数据库:数据类型、存储引擎、约束、
    并发编程:协程TCP、非阻塞IO、多路复用、
    并发编程:同步异步、队列、协程与实现方式
    并发编程: GIL锁、GIL与互斥锁区别、进程池与线程池的区别
    并发编程:生产消费模型、死锁与Rlock、线程、守护线程、信号量、锁
    并发编程:守护进程、互斥锁、案例、进程间通讯
    并发编程:进程、多道、进程执行顺序与常用属性
  • 原文地址:https://www.cnblogs.com/kevingod/p/3375512.html
Copyright © 2020-2023  润新知