极光 RegistrationID 详细定义 / 如何获取 / 不同设备取到相同 ID / 同一设备是否变化 原文标题:registrationID 详细定义 / 如何获取 / 不同设备取到了相同的 ID / 同一设备是否会产生变化-极光社区
内容概要总结
极光社区(JPush 官方社区)关于推送标识 RegistrationID 的官方解答帖,覆盖定义、获取方式与两类异常。
定义:有效的 RegistrationID 长度为 11 或 19 个字节,第一位有效字符为 [0,1],第二位为 [0-9a],第三位为 [0-2],剩余位为 [0-9a-f];只能在客户端集成后取到,不可在服务端自行生成。从左数第三位代表平台,可据此辨别 Android 与 iOS 设备。建议在客户端监听广播或调用接口取得后保存到己方服务器,用于一对一推送以及服务端设置别名/标签。
异常一(Android 不同设备取到相同 RegistrationID):后台以 appkey_dvcid->uid、appkey_imei_mac->uid、appkey_serial->uid 三种映射存储 uid,任一 key 命中即返回该 uid;若 IMEI 相同且 MAC 为空,多台设备就可能拿到相同 RegistrationID。解决办法是使 IMEI、serial_number、deviceID 均不同(serial_number 为新 SDK 版本新增的判断依据),并清理 /data/.push_deviceid 文件与 Settings 中的 devcie_id_generated。
异常二(RegistrationID 变化):同设备同 App 卸载重装一般不变;iOS 9 以上 Apple 在重装后下发新 token,导致 RegistrationID 改变;长时间关闭推送后再打开也可能导致 token 变化。
原文内容(原文即中文)
registrationID 详细定义 / 如何获取 / 不同设备取到了相同的 ID / 同一设备是否会产生变化
发表于
极光宝典 | 你想问的我都有
定义
详细定义,registrationID 如何产生的?点我查看
有效的 RegistrationID 长度为 11 或 19 个字节,其中第一位有效字符 [0,1],第二位有效字符 [0-9a],第三位有效字符 [0-2],剩余位有效字符 [0-9a-f]。registrationID 只能在客户端集成后取到,不可以自行在服务端生成
可用来辨别 Android & 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 中未用作判断)
- 步骤一:把这个文件清掉:Environment.getExternalStorageDirectory().getPath() + "/data/.push_deviceid";
- 步骤二:同步清除掉 setting 里面的,方法如下:Settings.System.putString(context.getContentResolver(), “devcie_id_generated”, “”);
上述操作是系统方法,如果操作未果,则说明你使用的是自己的定制设备,导出你的数据库信息查看一下 device ID 信息,不要将该信息固定为同一个值。
registrationID变化的可能原因
Android 可能会产生 RegistrationID 变化的操作(一般情况下同一个设备同一个 App 卸载重装的 RegistrationID 是一样的)
iOS 设备的 RegistrationID 发生变化,如果不使用 IDFA
- iOS 9 以上系统,由于 Apple 在 App 卸载重装后,会给一个新的 token,所以对应的 RegistrationID 也会改变。
- 长时间关闭推送后又打开,也可能导致 token 变化。
如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)
点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
原创声明:本文系作者授权极光社区发表。如有侵权,请联系
community@jiguang.cn
删除。