解析极光推送如何尽可能地来唯一识别移动设备?

发布时间:2021-03-28 来源: 万汇智联 浏览次数:

对于App云平台系统,如何唯一标识移动设备非常重要。否则,每次用户在设备上卸载并重新安装应用程序时,后端系统只能将该用户视为全新用户。

在Android上识别设备的唯一性。因为这个圆圈太乱了,所以设备本身的任何标识都不能直接用作设备的唯一标识。 iOS受到系统强大限制的独特认可。目前,唯一可以部分满足条件的部分是IDFA,但这要求您的App本身必须嵌入广告。

当许多开发人员使用Jiguang Push时,他们会遇到以下问题:Jiguang Push如何唯一地标识设备。本文分析了Aurora Push如何尽可能唯一地识别设备。

Jiguang Push使用RegistrationID作为设备上安装的App的标识。 Aurora Push希望“尽可能”确保设备的唯一性,即使RegistrationID尽可能唯一。

注册ID的定义

关于RegistrationID,积光的正式文件具有以下定义:

首次启动应用程序后,如果将与JPush SDK集成的应用程序成功注册到JPush服务器,则JPush服务器将把device-RegistrationID的唯一标识返回给客户端。 JPush SDK将以广播的形式将RegistrationID发送到应用程序。

有了此标识,App编程可以将RegistrationID保存到其自己的应用程序服务器,然后根据RegistrationID将消息或通知推送到设备。

RegistrationID更改的可能性

如果未卸载该应用,则会直接覆盖并安装该应用app上架 广告标识符,并且Android和iOS上的RegistrationID的值不会更改。

如果该应用已卸载然后再次安装:

Android上的RegistrationID基本上不会更改;

在iOS上,如果启用了IDFA,则更改的可能性很小。如果未启用IDFA,则每次安装后RegistrationID都会更改;

RegistrationID生成规则分析Android平台

在Android上,由于中国存在大量假冒设备,因此无法使用可被视为唯一标识符的常规IMEI,Mac地址和AndroidID值,因为这些值可能全部是一批设备具有相同的值。

Aurora的基本思想是:

生成DeviceID并将其保存到“设置”,“外部存储”。依靠本地存储。卸载并重新安装应用程序后,如果这些存储中的DeviceID仍然存在,则它是同一设备。从理论上讲,这可以解决90%的不变性问题。

在DeviceID之外添加补充规则:根据IMEI,MAC地址,AndroidID,序列号的值全面判断它是否是旧设备。

具体的逻辑细节会根据实际操作情况和收集到的反馈不断进行调整,并且大多数逻辑都可以在服务器端进行调整。

iOS平台

由于iOS系统设计限制了设备的唯一标识,因此Jiguang一直使用Device Token作为标识,并且因为Jiguang Push本身要求Device Token的值才能起作用。

在iOS 9版本之后,卸载后的每次重新安装都会导致设备令牌更改,因此对于Jiguang后端,只能将其识别为新用户。

新版本的Aurora SDK添加了IDFA选项。集成和初始化SDK后,可以设置IDFA值,这样Aurora后端将首先根据IDFA值识别用户,并在有可能的情况下在卸载后重新安装该应用程序,还可以向后识别到旧设备。

IDFA是广告标识符,由iOS专门设计,用于唯一标识用于广告跟踪的用户。在iOS设备上的设备->隐私->广告页面上,有一个设置项:限制广告跟踪。默认为未选择状态,即关闭状态,没有限制。用户可以选择限制广告跟踪。除了设置外,还有一个按钮:“还原广告标识符...”。如果用户单击此按钮,则IDFA值将更改。

app上架 广告标识符

默认情况下,广告跟踪没有任何限制,并且可以采用IDFA的值。并且当用户未单击“还原广告徽标”时,此值将不会更改。这样就可以达到唯一识别设备并跟踪用户的目的。

但是,请注意,不一定要启用IDFA。它要求您的应用程序必须具有广告功能,然后才能使用。否则app上架 广告标识符,Apple可能会在审核过程中发现并拒绝。

有关启动Apple App的IDFA要求,请参阅此处的说明:

高级用法建议

由于仅在JPush SDK注册完成后才获得RegistrationID,因此在调用SDK API以获得RegistrationID的值时需要注意。它并不总是立即可用。

例如,在iOS上,建议在侦听通知kJPFNetworkDidLoginNotification后在代码中获取RegistrationID的值。