2016-07-21 4 views
3

Я новичок в React Native и тестирую PushNotificationIOS. Но вызов checkpermission дает мне ошибку на Android.Как правильно использовать компоненты только для iOS в React Native без ошибок в Android

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

Я предполагаю, что это потому, что мне нужно использовать только компонент на iOS. Как добавить проверку ОС для совершения вызова только на 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

Я согласен с ответом AKADER в ниже, но если в других местах, которые необходимо выполнить одно вы должны проверить документацию для модуля платформы. https://facebook.github.io/react-native/docs/platform-specific-code.html –

ответ

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

И он будет работать платформы специальный код.

Другой способ платформенный модуль

Реагировать 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

+0

Спасибо! Платформа - это то, что мне нужно. :) попробует отдельные файлы, когда у меня будет больше кодов, специфичных для платформы. –

+0

Np. Я не был уверен, что это единственное, что вам нужно, поэтому я рекомендовал первый пример. Примите мой ответ :) –

 Смежные вопросы

  • Нет связанных вопросов^_^