4

我是 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)
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 回答