如何在反应原生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