如何在反应原生android中获取设备ID?

Posted

技术标签:

【中文标题】如何在反应原生android中获取设备ID?【英文标题】:how to get device Id in react native android? 【发布时间】:2016-10-13 10:33:16 【问题描述】:

我正在尝试从 android 设备获取设备 ID。有几个链接和包可用于获取设备 ID,但在 Android 的情况下很少可用。以下是我已经尝试过但没有结果的链接:

链接1:https://github.com/rebeccahughes/react-native-device-info 我试过这个链接没有成功它可能在ios上运行良好但在Android上它在github链接“react-native link react-native-device-info”上运行提到的命令时显示错误 错误:无法识别链接

链接2:https://github.com/lazywei/react-native-device-uuid 它只有IOS的解决方案

我被困在这里。我不知道我将如何解决这个问题?请帮忙?

提前致谢

【问题讨论】:

【参考方案1】:

你没有指定 react native 版本号。

我使用了相同的 react-native-device-info 包。

我尝试了以下版本,它对我有用。

  "react": "16.0.0",
  "react-native": "0.50.4",
  "react-native-device-info": "^0.12.1",

我是用命令安装的:

npm install --save react-native-device-info

然后我将它与命令链接:

react-native link react-native-device-info

如果您在链接包时遇到任何问题,那么您可以进行手动链接,或者您可以交叉检查包是否成功链接。

    在 android/app/build.gradle 中:
 dependencies 
        ...
        compile "com.facebook.react:react-native:+"  // From node_modules
    +   compile project(':react-native-device-info')
    
    在 android/settings.gradle 中:

...

包括 ':app'

包括':react-native-device-info'

project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')

    在 MainApplication.java 中:
+ import com.learnium.RNDeviceInfo.RNDeviceInfo;

  public class MainApplication extends Application implements ReactApplication 
    //......

    @Override
    protected List<ReactPackage> getPackages() 
      return Arrays.<ReactPackage>asList(
+         new RNDeviceInfo(),
          new MainReactPackage()
      );
    

    ......
  

权限

为您的 AndroidManifest.xml 添加适当的可选权限:

...
<uses-permission android:name="android.permission.BLUETOOTH"/>         <!-- for Device Name -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  <!-- for Phone Number -->

示例

var DeviceInfo = require('react-native-device-info');
// or import DeviceInfo from 'react-native-device-info';

var deviceId = DeviceInfo.getUniqueID();

你可以使用上面的 deviceId。

【讨论】:

我注意到链接后,MainApplication.java 没有更新。所以我手动更新了它 - 我仍然没有运气 --> TypeError: undefined is not an object (evaluating '_reactNativeDeviceInfo.DeviceInfo.getVersion') ` "react": "16.0.0", "react-native": "0.50.3", "react-本机设备信息": "^0.14.0", ` "react": "16.0.0", "react-native": "0.50.3", "react-native-device-info": "^0.14.0" 【参考方案2】:

你可以安装这个包:https://github.com/rebeccahughes/react-native-device-info

然后使用它

import DeviceInfo from 'react-native-device-info';

const uniqueId = DeviceInfo.getUniqueID();

【讨论】:

【参考方案3】:

实际上推送通知设备ID(结合用户设备和您的包名)由谷歌GCM服务器生成并发送到设备。您必须先了解GCM概念然后尝试..

GOOGLE GCM DOC

然后尝试一些 react-native 插件 like 和 link

【讨论】:

你有示例代码吗?我坚持下去,因为我是这方面的初学者,面临很多问题。 @YAM .. 抱歉,我之前没有尝试使用 react native 进行此操作。我只使用了 cordova push 插件。我不知道 react native。首先,你必须从谷歌开发者控制台获取服务器密钥和发件人 ID,你明白了吗? 这个插件看起来很简单试试这个..link

以上是关于如何在反应原生android中获取设备ID?的主要内容,如果未能解决你的问题,请参考以下文章

反应原生android,在尝试获取firebase消息设备令牌时得到FIS_AUTH_ERROR

如何在本机反应中获取设备令牌

反应原生无法从蜂窝网络找到位置

如何在 android 10 中获取唯一的设备 ID?

如何在反应原生网格图像查看器中传递动态获取的图像数组数据,并在反应原生中使用标题

如何在 Android 和 IOS 中获取设备 ID