如何在Android中正确使用React Native中仅有iOS的组件而不会出现错误

时间:2016-07-21 14:52:22

标签: android react-native react-native-android

我是React Native的新手并测试了PushNotificationIOS。但是checkpermission调用在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 个答案:

答案 0 :(得分: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提供了一个模块来检测其中的平台   应用正在运行。您可以使用检测逻辑来实现   特定于平台的代码。只在a的一小部分时使用此选项   组件是特定于平台的。

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