在本机反应中获取设备ID?

新手上路,请多包涵

如何在本机反应中获取设备ID。我正在使用 create react native 而不是 android studio。我是新来的。

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

constructor(props) {
 super(props);
   this.state = { id: '' }
   this.onNavigateTo = this.onNavigateTo.bind(this);
}
componentDidMount() {
   this.setState({id: DeviceInfo.getUniqueID()}, () =>
   alert(this.state.id));
}
render() {
  return (
       <Text>{this.state.id}</Text>
  );
}

错误:未定义不是对象(评估“RNDevice.uniqueId”)

注意:- 我没有使用 run-android 或 run-ios

我正在使用 Create-react-native app 和 yarn start。输出将通过 Expo 应用程序在设备上

原文由 user1731387 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 696
2 个回答

如果你想使用原生代码,你不能使用使用原生代码的 ,如果你想使用原生代码,你需要在入门 文档 中使用原生代码创建项目。

  1. 安装预请求应用程序(节点 - Java 开发工具包 - android studio - xcode - react native cli )
  2. 运行命令 react-native init MyProjectName
  3. cd 你的项目文件夹 cd MyProjectName
  4. 运行 react-native run-androidreact-native run-ios

如果你想将 expo 项目转换为原生代码项目,你可以做 从创建反应原生应用程序弹出

  1. 如上所述安装本机代码要求
  2. 运行 npm run eject

之后,您可以使用使用本机代码并运行的第三方库 react-native link

原文由 Mohamed Khalil 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 react-native CLI 创建项目,而不是 expo。

使用命令创建一个新项目:

 react-native init Myproject

cd Myproject

使用以下命令运行项目:

 react-native run-android

然后你可以使用 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 中:

> ...
>
> 包括':应用程序'
>
> 包括 ':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 添加适当的可选权限:


**例子**

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

var deviceId = DeviceInfo.getUniqueID();

”`

您可以使用上面的 deviceId。

原文由 rahul.sapkal23 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题