2016-07-21 4 views
3

私はReact NativeとPushNotificationIOSをテストするのが初めてです。しかし、checkpermissionコールは私にAndroidのエラーを与えています。AndroidでエラーなしでReact NativeのiOSコンポーネントのみを正しく使用する方法

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) 
+1

任意の値を受け入れることができplatform.selectもありますオフプラットフォームは、Platformモジュールのドキュメントをチェックする必要があります。 https://facebook.github.io/react-native/docs/platform-specific-code.html –

答えて

5

は、私は何を示唆していることは、別のファイルにそのプラットフォーム固有のコードを分割されます。

は、ここに私のコードです。

React Nativeは、ファイルに.iosがあると検出します。または.android。他の コンポーネントから、必要に応じて該当するプラットフォームファイルをロードしてください。

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

をし、この

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

のようにそれを使用し、それは、プラットフォーム固有のコードを実行します:

MyFile.ios.js 
MyFile.android.js 

その後、次のようにコンポーネントを必要とすることができます。

別の方法

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

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

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

私は以下AKADERの答えに同意するが、他の場所で使用すると、ワン実行する必要がある場合に

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

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

+0

ありがとう!プラットフォームは私が必要とするものです。 :)私はより多くのplatformspecificコードを持っているときに別のファイルを試してみます。 –

+0

Np。私はそれがあなたが必要としていた唯一のものなのかどうか分からなかったので、最初の例をお勧めしました。私の答えを受け入れてください:) –

関連する問題