12

反応ネイティブでデバイス ID を取得する方法。Androidスタジオではなく、create react nativeを使用しています。私はこれが初めてです。

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>
  );
}

エラー: undefined はオブジェクトではありません (「RNDevice.uniqueId」を評価しています)

注:-私はrun-androidまたはrun-iosを使用していません

Create-react-native アプリと yarn start を使用しています。出力はExpoアプリを介してデバイス上にあります

4

5 に答える 5

16

expo の代わりに、react-native CLI を使用してプロジェクトを作成できます。

コマンドを使用して新しいプロジェクトを作成します。

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 で:

...

':app' を含める

':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();

上記のdeviceIdを使用できます。

于 2017-11-28T09:18:56.837 に答える
8

Expoを使用している場合は、これを試してください。

import Constants from 'expo-constants';
this.clientId = Constants.deviceId;
于 2019-10-21T10:44:58.377 に答える
6

expo でネイティブ コードを使用するライブラリは使用できません ネイティブ コードを使用する場合は、注意事項を参照してください基本的にドキュメントの開始時にネイティブ コードでプロジェクトを作成する必要があります

  1. 事前リクエスト アプリをインストールします (ノード - Java 開発キット - アンドロイド スタジオ - xcode - 反応ネイティブ cli )
  2. コマンドを実行react-native init MyProjectName
  3. プロジェクトフォルダーを cd しますcd MyProjectName
  4. 実行react-native run-androidまたはreact-native run-ios

expo プロジェクトをネイティブ コード プロジェクトに変換する場合は、jecting-from-create-react-native-app を実行できます

  1. 上記のネイティブ コード要件をインストールする
  2. 走るnpm run eject

その後、ネイティブコードを使用して実行するサードパーティのライブラリを使用できますreact-native link

于 2017-09-27T17:18:34.720 に答える