关于ios 推送功能的终极解决
本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看
首先要感谢那些富有分享精神的大牛们所作的贡献 让我这个新手可以从零把推送功能整上线。
至于推送功能的原理什么的我就不说了 网上关于推送的资料很多 不过有很多一部分都写的不知所以然 不过原理还是可以弄明白的
这里附上一篇英文帖子链接 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
中文翻译 http://article.ityran.com/archives/194
我第一次就是看的英文原帖 中文翻译的也很好 不过感觉作者没有亲自试过 我可是实现了哦 。
这里我说我认为比较关键的地方
1生成钥匙串请求问题 在你做一个新的带推送的功能的应用的时候最好重新生成一次钥匙串请求 省的乱
在你生成钥匙串请求的时候 那个CRS文件一定要留着 还有更重要的是你在生成这个钥匙串请求的时候 在钥匙串里边会出来一对密钥 这个一定要注意那一对是刚刚出现的
帖子里边说的导出那个.p12文件就是指刚才那对密钥的私钥的导出文件
(这个不知道怎么把图贴出来 大家可以参考那两个帖子里边的图)
2 必须唯一的标示符App ID 不能用通配符 这个没商量。不过同一个应用测试和发布可以用同一个标示符。
3 APNS地址
测试地址gateway.sandbox.push.apple.com:2195
发布地址 gateway.push.apple.com:2195
这两个是有区别的 当然证书也是
4 顺序 我就是被这个顺序搞的郁闷了
生成钥匙串请求 》》下载开发证书和发布证书(最好都一起下了)》》 配置App ID 把development SSL 和 production SSL 都配置好 下载SSL证书 》》 最后下载Provisioning证书
一定要这个顺序 密钥 CRS文件 必须匹配 在下载发布证书一定先把 发布的SSL证书下好了 否则就会出现推送成功 客户端收不到问题。
5 真机测试
开发的时候一般我们都是用Xcode直接灌到设备里 这个时候development证书是可以推送成功的 但是production证书却推送不了
不过苹果给我们提供了Ad Hoc测试方式 它使用的是发布证书 如果你不知道Ad Hoc模式可以搜一下 很简单的
这里有一个关键的地方 development和production得到的Token的不一样的
使用Ad Hoc方式装到设备上得到的就是production Token 所以你在用Ad Hoc方式测试的要使用production Token
如果使用Ad Hoc方式测试没问题 这个发布也就没问题了
还有一个问题就是Token会更新 这个在官方文档中有提到 就是在一定的时间或者刷机某些不经常出现的情况下 苹果公司的服务器可能会更新设备的Token
这里你需要的一个机制来解决这个问题
我的解决办法是更新应用版本 然后定期删掉服务器就时间比较久的Token
这样肯定会造成部分没有更新用户收不到推送的问题 不过只要他即时更新就没问题了 这是一个懒办法
因为我的应用只在程序第一次打开的时候上传一次以后就不传了 这样可以减少服务端的负荷
不过你是一个推送很频繁应用那就频繁获取频繁的更新服务端记录 这个就根据情况来了
简单的几点就写到这里 可能有些地方描述的不够清楚 请大家原谅 如果需要帮助可联系我的新浪微博 @一颗有思想的白菜
2013.03.01补充内容:
上次有个同学前边的步骤都没问题,最后验证的时候出来如下提示,注意看红线部分,当时他以为是证书没通过验证,实际上这是没问题的。
图片:FA781775-8E66-45C4-8DE1-96F417456DD0.png

关于ios 推送功能的终极解决的更多相关文章
- [转]关于ios 推送功能的终极解决
刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...
- 转:关于ios 推送功能的终极解决
刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...
- iOS 推送功能打包后获取不到deviceToken
公司项目用ionic3构建, 用了极光推送插件(cordova-plugin-jpush). 开发时一切将各种Bundle Id, 推送证书等都绑定完测试一切正常. 可是要给测试人员打Ad-Hoc包时 ...
- iOS推送功能极光推送的介绍与实现
1.个人整理操作流程 2.官方使用说明流程 2018iOS极光推送完整流程 极光推送官网
- React-Native 工程添加推送功能 (iOS 篇)
推送已经是是手机应用的基本功能,如果自己实现一套推送系统费时费力,所有一般我们会使用第三方的推送服务,这里我使用「极光推送」作为集成推送的例子,因为有现成的 react native 插件 jpush ...
- 苹果IOS、安卓推送功能开发
IOS推送开发:以下是基于开源javapns推送开发1.DerInputStream.getLength(): lengthTag=111, too big.先排除是否由于打包时证书 .p12 文件被 ...
- 一步一步教你做ios推送
最近在研究ios的推送问题,遇到了一些问题,最终整理了一下.放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服 ...
- 手把手教你搞定个推iOS推送SDK集成
以下是一位开发者在集成个推iOS推送SDK过程中的真实经历. 作者:Ezreallp 一次偶然的机会,公司的项目要用到推送,我自己本来就很懒,不愿意去弄整套APNS的流程,刚好之前跟朋友聊起过他们的产 ...
- iOS推送遇到的问题
1. 推送证书过期. 同事说iOS客户端不能推送消息,发现推送证书过期了,苹果的推送证书有效期是一年,推送证书过期后就不能使用推送服务了.解决办法:重新请求推送证书,导出p12文件,传给后台服务器就可 ...
随机推荐
- Loadrunner性能测试分类详(二)
一.基准测试 有基础的标准,这样能通过对比发现系统的不同点与变化. 1.可以再指定的标准下通过基准测试建立一个性能基准,这样以后当系统的环境.参数发生变化后,再进行一次相同标准下的测试,即可看出变化对 ...
- JS 新浪API获取IP归属地
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 返回值数据格式:var remote_ip_info = {“ret”:1,” ...
- 学习笔记——建造者模式Builder
构造者模式.外部场景如果需要一个汽车类,它不需要关心如何构造,它只需要告诉Director需要什么,就可以从Director获得. 如:CDirector(IBuilder* aBuilder); 场 ...
- java包(package)
为了更好地组织类,java提供了包机制,用于区别类名的命名空间. 这样在不同的命名空间就可以有相同命名的类. 1 把功能相似或相关的类或接口阻止在同一个包中,方便类的查找和使用. 2 如同文件夹一样, ...
- ubuntu上的mysql数据库双机备份设置
配置环境: myslq 5.5.3 + ubuntu server 12.04 一.配置MySQL主服务器(192.168.0.1) 1.增加一个账号专门用于同步 1 mysql>grant r ...
- ubuntu11.10server 安装redis-2.6.7
1.下载安装: 1 2 3 4 5 6 cd /tmp wget http://redis.googlecode.com/files/redis-2.6.7.tar.gz tar -zxf redis ...
- 转:Jmeter 用户思考时间(User think time),定时器,和代理服务器(proxy server)
在负载测试中需要考虑的的一个重要要素是思考时间(think time), 也就是在两次成功的访问请求之间的暂停时间. 有多种情形挥发导致延迟的发生: 用户需要时间阅读文字内容,或者填表,或者查找正确的 ...
- USACO Section 1.4 Arithmetic Progressions 解题报告
题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...
- 删除MySQL二进制日志
服务器上的120G SSD硬盘空间用了92%,检查后发现,原来是 MySQL的二进制日志没有及时清除,占用了大量的空间, 于是直接用命令:reset master 一把删干净了. 1 reset ma ...
- PADS 导Gerber文件
PCB也画了好几年,投板时都是直接发PCB文件,突然间客户让我导出Gerber文件, 一时半会还挺棘手的,上网不停的搜啊搜啊,虽然最终还是搞定了,但耽误了不少时间. 现总结下,把所有相关设置一步一步的 ...