React-Native:在重新安装应用程序后获取相同的唯一设备ID

11

我正在使用React-Native编写应用程序,需要一些有关在重新安装应用程序后识别设备的帮助。

我需要:

  • 获取每个Android和iOS设备的唯一设备ID。
  • 即使用户卸载并重新安装应用程序,也应返回相同的ID。

目前最接近这一要求的是react-native-device-info中的getUniqueID()方法。但是,由于该方法返回的值与供应商相关,因此在iOS上重新安装应用程序时将返回不同的ID。

祝您拥有美好的一天!


你能找到这个问题的解决方案吗?广告标识符IDFA是否跨安装持久存在? - Noitidart
你得到解决方案了吗? - Vijay Sharma
你好,很遗憾我没有参与这个项目。不过我正在考虑如何使用钥匙串来存储identifierForVendor。如果您找到了解决此问题的方法,请在此回复。 - MisseMask
3个回答

4
  1. 如果您需要出于安全目的(例如,以防止滥用API或高级内容),则可以使用iOS设备检测/应用程序认证进行iOS和Google Safety Net 进行Android。通过使用这些库,您将获得唯一的设备令牌(在iOS上)或认证(在Android上)。

在使用iOS时,您可以获取此令牌,并通过使用自己的服务器作为中间人(不应直接从移动应用程序中执行)在由Apple直接托管的服务器上设置两个位。

根据苹果公司:苹果公司为您记录位并向您报告位,但您负责跟踪位的含义。您还需要确定何时为给定设备重置位;例如,当用户将设备出售给其他人时。

同样,在Android上-只需将认证从设备发送到服务器,其中将对其进行验证。

要在React Native中使用上述库,可以安装相应的库:

或者,如果使用Firebase库(例如,来自rnfirebase.io),则可以使用AppCheck,它在核心上使用SafetyNet和DeviceCheck/App Attestation,并且还带有易于使用的服务器端验证(也适用于非Firebase资源)。

  1. 如果您需要一种专注于从服务器向客户端推送数据的解决方案,则可以使用推送通知标记。

库:

由于这个令牌可以(按设计)随时间而改变,因此您应该实现一些支持此功能的服务或潜在地重新构建您的应用程序。通常,在后端下用户配置文件中存储令牌(或以某种其他方式链接到正在使用给定设备的用户)。

  1. 如果你在寻找其他东西,我认为这是不可能的。

1
不用担心MisseMask,uniqueID始终是针对您的应用程序包ID唯一的。每个应用程序有两个uniqueID。
一个uniqueID用于调试版本,另一个用于发布版本。因此,请通过反复安装debug模式下的应用程序来检查您的应用程序,以获取相同的uniqueID。然后再使用release版本进行此过程。
例如:
Debug version uniqueID: 
  1st install  - 3279dhsbqd9yrbceqiqbcv
  2nd uninstall and install - 3279dhsbqd9yrbceqiqbcv
  3, 4, 5, 6, .... - are same uniqueID
Release version uniqueID:
  1st install - dsvfhdfgdf454tdsgsghetuh7j5
  2 nd uninstall and install - dsvfhdfgdf454tdsgsghetuh7j5
  3, 4, 5, 6, .... - are same uniqueID

0
如果您需要为每个设备提供唯一的身份,请确保使用IMEI,您可以通过以下方式获取它
npm install react-native-imei --save

在启动应用程序时,将此代码放入其中。
const IMEI = require('react-native-imei');
IMEI.getImei().then(imeiList => {
console.log(imeiList)
});

不要忘记将这个放在AndroidManifest.xml中。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接