← 资料库索引 ← 社区讨论 原始链接 ↗ 🔍
社区讨论

极光 RegistrationID 详细定义 / 如何获取 / 不同设备取到相同 ID / 同一设备是否变化 原文标题:registrationID 详细定义 / 如何获取 / 不同设备取到了相同的 ID / 同一设备是否会产生变化-极光社区

发表时间:(页面未标注)采集时间:2026-10-09 22:41:18来源:community.jiguang.cn原文语言:zh状态:完整

内容概要总结

极光社区(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 变化。

原文内容(原文即中文)

极光logo
极光logo

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
删除。

#SDK

#API

#缓存

#存储

#数据库

0条评论

放大预览