web-dev-qa-db-fra.com

Obtenir l'identifiant de l'appareil dans React Native?

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

7
user1731387

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

  1. installer des applications de pré-demande (nœud - Java - Android studio - xcode - react native cli)
  2. exécuter la commande react-native init MyProjectName
  3. cd votre dossier de projet cd MyProjectName
  4. courir 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

  1. installer l'exigence de code natif comme ci-dessus
  2. courir npm run eject

après cela, vous pouvez utiliser des bibliothèques tierces qui utilisent du code natif et exécutez react-native link

5
Mohamed Khalil

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.

  1. dans Android/app/build.gradle:
 dependencies {
        ...
        compile "com.facebook.react:react-native:+"  // From node_modules
    +   compile project(':react-native-device-info')
    }
  1. dans Android/settings.gradle:

...

inclure ': app'

inclure ': react-native-device-info'

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

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

    ......
  }

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.

11
rahul.sapkal23

Si vous utilisez Expo, essayez ceci.

import Constants from 'expo-constants';
this.clientId = Constants.deviceId;
0
user1047504

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)

0
Matheus Barradas