如何在React Native Android中获取设备ID?

8
我正在尝试从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的解决方案。
我卡在这里。我不知道如何解决这个问题?请帮忙?
提前感谢。
3个回答

9

你没有指定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

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

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

...

include ':app'

include ':react-native-device-info'

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

  1. 在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();

您可以使用上述设备ID。

我注意到在链接后,MainApplication.java没有更新。所以我手动更新了它 - 仍然没有运气。我得到 --> TypeError: undefined is not an object (evaluating '_reactNativeDeviceInfo.DeviceInfo.getVersion')"react": "16.0.0", "react-native": "0.50.3", "react-native-device-info": "^0.14.0", - Azmeer
"react": "16.0.0", "react-native": "0.50.3", "react-native-device-info": "^0.14.0" - Azmeer

3

0

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

GOOGLE GCM DOC

然后尝试一些React Native插件likelink


你有示例代码吗?我现在卡住了,因为我是初学者,在遇到很多问题。 - YAM
@YAM..抱歉我之前没有尝试过在React Native中使用这个插件,我只用过Cordova推送插件。我不了解React Native。首先,你需要从Google开发者控制台获取服务器密钥和发送者ID,你有获取到吗? - sharma sk
这个插件看起来非常简单,可以试一下..链接 - sharma sk

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