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