系统推送的集成(二) —— 推送遇到的几个坑之BadDeviceToken问题(一)

版本记录

版本号 时间
V1.0 2018.06.29

前言

我们做APP很多时候都需要推送功能,以直播为例,如果你关注的主播开播了,那么就需要向关注这个主播的人发送开播通知,提醒用户去看播,这个只是一个小的方面,具体应用根据公司的业务逻辑而定。前面已经花了很多篇幅介绍了极光推送,其实极光推送无非就是将我们客户端和服务端做的很多东西封装了一下,节省了我们很多处理逻辑和流程,这一篇开始,我们就利用系统的原生推送类结合工程实践说一下系统推送的集成,希望我的讲解能让大家很清楚的理解它。感兴趣的可以看上面几篇。
1. 系统推送的集成(一) —— 基本集成流程(一)

问题描述

APP已经上架了好几天了,最近服务端同学说看见了很多个失败,并给我发了一张后台日志截图。

我当时就很疑惑,因为测试的时候用development证书进行的测试,没有任何问题,而且客户端就那么几行代码,注册PUSH,收到DeviceToken并发给服务端进行绑定,其他没什么了。

于是我就拿着我的DEBUG包和服务端进行现场调试,不管服务端用development还是production证书,我均可以收到PUSH,无法复现他日志中苹果给他的回调情况。但是,当我从appStore下的包,用production证书让服务端给我的id推送还是收不到。

那时候第一个感觉是不是证书生成的有问题,于是我就找到生成推送证书的同事,重新生成了一下还是这个问题。

后来,又一起找资料联合调试了下,发现了是服务端的问题


问题原因

问题就是服务端发送PUSH的host配置的有问题,苹果认为DEBUG包都是测试环境,他都往apple测试环境发的推送,所以我的DEBUG包都可以收到推送;但是苹果认为appstore包应该走的是正式环境,但是服务端还往测试环境发PUSH,而devicetoken是正式环境的,所以苹果那边不认你这个token,所以认为是bad无效的。

其实,推送成功还是失败苹果服务器会给我们服务器回调的,成功的回调不用多说就是成功200了,失败了对应一个列表,上面会有说明是什么原因,如下所示,后面会详细的说一下这几个错误码都具体什么意义。

系统推送的集成(二) —— 推送遇到的几个坑之BadDeviceToken问题(一)_第1张图片

后记

本篇主要讲述了推送遇到的几个坑之BadDeviceToken问题,感兴趣的给个赞或者关注~~~~

系统推送的集成(二) —— 推送遇到的几个坑之BadDeviceToken问题(一)_第2张图片

你可能感兴趣的:(系统推送的集成(二) —— 推送遇到的几个坑之BadDeviceToken问题(一))