comment obtenir l'identifiant de l'appareil dans React Native. J'utilise create react native not Android studio. Je suis nouveau dans ce domaine.
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>
);
}
Erreur: undefined n'est pas un objet (évaluation de 'RNDevice.uniqueId')
Remarque: - Je n'utilise pas run-Android ou run-ios
J'utilise l'application native Create-react et le démarrage du fil. La sortie sera sur l'appareil via l'application Expo
vous ne pouvez pas utiliser une bibliothèque qui utilise du code natif avec expo voir mises en garde si vous voulez utiliser du code natif, vous devez créer votre projet avec du code natif pour commencer doc en gros
react-native init MyProjectName
cd MyProjectName
react-native run-Android
ou react-native run-ios
si vous voulez convertir un projet d'expo en projet de code natif, vous pouvez le faire éjecter-de-créer-réagir-native-app
npm run eject
après cela, vous pouvez utiliser des bibliothèques tierces qui utilisent du code natif et exécutez react-native link
Au lieu d'exposer, vous pouvez créer un projet à l'aide de CLI native native.
Créez un nouveau projet à l'aide de la commande:
react-native init Myproject
cd Myproject
Exécutez le projet à l'aide de la commande suivante:
react-native run-Android
Ensuite, vous pouvez utiliser le package info-native-device-info.
J'ai essayé avec les versions suivantes et cela a fonctionné pour moi.
"react": "16.0.0",
"react-native": "0.50.4",
"react-native-device-info": "^0.12.1",
Je l'ai installé avec la commande:
npm install --save react-native-device-info
Ensuite, je le relie à la commande:
react-native link react-native-device-info
Si vous rencontrez un problème lors de la liaison du package, vous pouvez effectuer le lien manuel ou vérifier par recoupement que les packages sont correctement liés ou non.
dependencies { ... compile "com.facebook.react:react-native:+" // From node_modules + compile project(':react-native-device-info') }
...
inclure ': app'
inclure ': react-native-device-info'
project (': react-native-device-info'). projectDir = new File (rootProject.projectDir, '../node_modules/react-native-device-info/Android')
+ 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() ); } ...... }
Autorisations
Ajoutez les autorisations facultatives appropriées à votre fichier AndroidManifest.xml:
...
<uses-permission Android:name="Android.permission.BLUETOOTH"/> <!-- for Device Name -->
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"/> <!-- for Phone Number -->
Exemple
var DeviceInfo = require('react-native-device-info');
// or import DeviceInfo from 'react-native-device-info';
var deviceId = DeviceInfo.getUniqueID();
vous pouvez utiliser deviceId ci-dessus.
Si vous utilisez Expo, essayez ceci.
import Constants from 'expo-constants';
this.clientId = Constants.deviceId;
Si votre objectif est d'obtenir un ID unique client, vous pouvez utiliser NativeModules
.
Import { NativeModules } from 'react-native'
sur votre composant ...
pour iOS: console.log(NativeModules.SettingsManager.clientUniqueId)
pour Android: console.log(NativeModules.PlatformConstants.fingerprint);
(ou NativeModules.PlatformConstants.serial
)