定义
详细定义,registrationID 如何产生的?点我查看
有效的 RegistrationID 长度为 11 或 19 个字节,其中第一位有效字符 [0,1],第二位有效字符 [0-9a],第三位有效字符 [0-2],剩余位有效字符 [0-9a-f]。registrationID 只能在客户端集成后取到,不可以自行在服务端生成
可用来辨别 Android & iOS 设备:从左数,第三位代表平台。
- 0 代表 Android
- 1 代表 iOS
建议
在客户端监听广播,或调用接口 获取到 RegistrationID,然后将其保存到己方服务器,以备使用!
「如何顺利的获取 RegistrationID 」
- 推送时可以 使用 RegistrationID 进行一对一推送
- 有「消息收不到」疑问时必须提供的信息
- 服务端调用 API 给设备设置别名 / 标签需要传的值
异常:Android 不同的设备却获取到相同的 RegistrationID
设备的 IMEI 、 serial_number 、deviceID是否相同
*(后台存储 uid 的方式是根据 appkey_dvcid->uid ,appkey_imei_mac->uid, appkey_serial->uid 这三种存储方式,左边的这三种key只要检测到一个匹配,就会把存的 uid 返回给前端)如果 IMEI一样,当取到的 mac 地址又为空,那就有可能很多设备拿到相同 RegistrationID 值
解决办法:使设备的 IMEI 、serial_number 和 deviceID 均不一样
(serial_number 是新 SDK 版本新增的,旧版本 SDK 中未用作判断)
重烧 IMEI ,刷机或者进行如下步骤:
- 步骤一:把这个文件清掉:Environment.getExternalStorageDirectory().getPath() + "/data/.push_deviceid";
- 步骤二:同步清除掉 setting 里面的,方法如下:Settings.System.putString(context.getContentResolver(), “devcie_id_generated”, “”);
- 步骤三:还有把缓存也清理下;
- 然后再重装 App。
上述操作是系统方法,如果操作未果,则说明你使用的是自己的定制设备,导出你的数据库信息查看一下 device ID 信息,不要将该信息固定为同一个值。
registrationID变化的可能原因
Android 可能会产生 RegistrationID 变化的操作(一般情况下同一个设备同一个 App 卸载重装的 RegistrationID 是一样的)
- 清除应用缓存
- 双卡双待的,更换卡槽
iOS 设备的 RegistrationID 发生变化,如果不使用 IDFA
- iOS 9 及以下系统一般是不会改变的
- iOS 9 以上系统,由于 Apple 在 App 卸载重装后,会给一个新的 token,所以对应的 RegistrationID 也会改变。
- 长时间关闭推送后又打开,也可能导致 token 变化。
如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)
点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
0条评论