React Native iOS原生模块未定义?

时间:2017-09-24 12:28:14

标签: ios xcode react-native react-native-android react-native-ios

我正在实现访问iOS功能的本机界面。

//SPRNUtilities.h at /ios/project_name
#import <React/RCTBridgeModule.h>
@interface SPRNUtilities : NSObject <RCTBridgeModule>
@end

//SPRNUtilities.m
#import "SPRNUtilities.h"
@implementation SPRNUtilities
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(pushNotificationEnabled:(RCTResponseSenderBlock)callback)
{
  id object = nil;
  if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]){
    object = @(YES);
  }else{
    object = [NSNull null];
  }
  callback(@[object]);
}

当我在JS代码上访问它时,

import { Platform, StyleSheet, NativeModules} from 'react-native';
export default class SPReactNativeUtils{
    static pushNotificationEnabled(callback){
        if (Platform.OS === 'ios'){
            const SPNativeiOS = NativeModules.SPRNUtilities;
            SPNativeiOS.pushNotificationEnabled((enabled) => {
                callback(enabled);
            });
        }else{
            callback(false);
        }
    }
}

但得到了失败的消息:

enter image description here

有人可以帮助我,为什么我遇到这个问题? 非常感谢!!!

1 个答案:

答案 0 :(得分:0)

根据上面提供的信息,请尝试使用以下选项进行调试:

  1. SPReactNativeUtils.js行号。 4放置一个控制台日志来检查是否定义了回调
  2. 检查SPNativeiOS是否已定义 - 如果不是这样,大多数情况下会为您提供更广泛的图片,然后转到选项3
  3. 将NSLog放在本机代码中以获取a的值。回调b。对象在各个阶段,最后检查值是否已分配给对象
  4. 确保运行yarn run ios(每当更改本机代码时创建新版本)
  5. 希望这会有所帮助。如果没有,请提供上述选项的输出,以帮助我们调试更多:)