4

私は React Native を初めて使用し、PushNotificationIOS をテストしています。しかし、checkpermission 呼び出しで Android でエラーが発生します。

ExceptionsManager.js:61 Cannot read property 'checkPermissions' of undefined

これは、iOS でのみコンポーネントを使用する必要があるためだと思います。OS のチェックを追加して、iOS でのみ呼び出しを行うにはどうすればよいですか?

これが私のコードです:

  componentWillMount: function() {
    //--  need an OS check here??
    PushNotificationIOS.checkPermissions((data)=> {
      console.log("in comp will mount: checking for permission")
      console.log(data.alert)
      console.log(data.badge)
4

1 に答える 1

5

私が提案するのは、そのプラットフォーム固有のコードを別々のファイルに分割することです。

React Native は、ファイルに .ios が含まれていることを検出します。または.android。拡張子を変更し、他のコンポーネントから必要な場合は、関連するプラットフォーム ファイルをロードします。

MyFile.ios.js
MyFile.android.js

次に、次のようにコンポーネントを要求できます。

const MyFile= require('./MyFile');

そして、このように使用します

componentWillMount: function() {
    //--  it would call the logic of what ever platform was detected automatically
    MyFile.CallWhatEver();

そして、プラットフォーム固有のコードを実行します。

別の方法は、

プラットフォーム モジュール

React Native は、アプリが実行されているプラ​​ットフォームを検出するモジュールを提供します。検出ロジックを使用して、プラットフォーム固有のコードを実装できます。コンポーネントの小さな部分のみがプラットフォーム固有である場合に、このオプションを使用します。

if(Platform.OS === 'ios')

platform.select任意の値を受け入れることができるもあります

const Component = Platform.select({
  ios: () => //function goes here,
  android: () => require('ComponentAndroid'),
})();

リンク https://facebook.github.io/react-native/docs/platform-specific-code.html

于 2016-07-21T15:10:08.943 に答える