推送出现错误的总结


缘由:

过去项目中的一些包括推送都是好用的。今天给公司一个同事安装测试版本的APP,用的是xcode自动管理证书,然后一直显示"xcode count connect net",就是连接不上网络,并且他的手机设备号不在调试证书的设备列表中。
我有不好意思不装,没办法,就去开发者管理证书中管理,结果出现了悲剧.

  • 1.我删除了非常多的无用的设备号
  • 2.此时所有的描述文件都不好使了,然后我去更新描述文件.
  • 3.下载描述文件,更新到xcode中。

推送的流程我有点没有改。 然后项目就不好使了,一脸懵逼~


在我的印象中,并且确实存在的事实:

  • 1.描述文件 = appId + cer + device
  • 2.推送证书 = appId + crt (个人电脑从keychain中请求的,任意电脑都行) 。推送只和appId每个手机的deviceToken有关系,和其他的描述文件啥的没有任何关系,也就是说,无论描述文件,device列表,或者cer文件的改变都不会影响到线上或者测试的推送
  • 3.使用推送了,无论那个推动的平台或者是IM的推送,只要将推送证书导出.p12格式上传到相应的位置就好,可以推送了。如果是重新生成了 推送证书,执行这一步就好了。

我的排插步骤:

  • 1.画了流程图,发现就是我说的这个逻辑,而且没毛病。
  • 2.特意去看看是不是手机的推送没有开启,发现设置-推送-沃德股市的推送是开启的。
  • 3.去appstore下载app,看看是不是有正常的,然后发现,也他妈的不好使。(我是用的是自己的手机,主要是那自己的手机作为主要的测试工具,还有一个ipad)

结果:

我特意去找朋友问了这个问题,最后给我的答案都是没毛病.但是我说了appstore也不好使,推送开着,接不到推送什么鬼?
最后一个女孩说的挺对,就是你的推送证书没问题,有可能是你的代码逻辑出现了什么问题。
我没记得改过什么啊?然后我开始怀疑自己的印象了。

  • 1.回退到几天前的版本。测试的。运行===好使了竟然好使了!!!(后来才想到今天上午,在appDelegate中删除了第三方推送的无用打印,真的是无用的,都是打印,但是不知到为什么会直接影响到推送,后来不这些无关紧要的加回去了,好了~
  • 2.执行release版本,然后运行,还是不好使,才意识到线上版本的推送只有打出一个ADHoc包才行,所以这个不算数,忽略不计,看3
  • 3.去苹果商店下载,运行,=== (拿自己的手机当做主测试机测试)还是不好使。一脸懵逼
  • 4.测试一下ipad的推送 === 好使了~ 太神奇了
  • 5.怀疑是手机版本太高了,导致正式不好使,但是测试版本的好用,这个假设不成立.pass
  • 6.突然找到了项目中有个设置页面,有是否接受推送的页面,专门和后台关联,若是关闭状态,后台不会给予推送。并且这个按钮,不知道为啥是关闭状态,因为IM的推送和这个是绑定的,所以IM也接受不到推送。所以就不好使了

正确的排除推送流程:

  • 1.推送证书 = appId + crt,和设备的deviceToken有关系,和其他因素无关(描述文件),不要怀疑人生。可以去看看注册的流程,返回deviceToken没有
  • 2.在第三方推送平台是否提交了p12文件
  • 3.看看手机的设置-推送是否开启,确定app中有无推送设置这中页面,确保其中的推送是开启状态。平时我们使用网络的时候,都会有两个判断,1.手机是否开启网络;2.是否允许该app使用网络。很多的权限,如照片库,手机联系人都是有两个判断,所以到时候一定要去确保这些选择都是开启的,再去做以后的判断,否则很可能被坑到
  • 4.多拿几个测试机测试一下,排除一个手机特殊情况的干扰(iphone的设置页面设置成不接受推送,但是ipad接受)

后记
后来我们又出现了一个问题,就是用的“个推”,然后项目使用apns的时候,点击屏幕上面的弹出框,但是获取不到后台给添加的在apns数据中的字典,只能收到apns固定的数据,最后才发现,推送不能超过2k,然后让后台给个推服务器发送东西的时候,少发点就行了

你可能感兴趣的:(推送出现错误的总结)