React Native NativeModules Empty Object

时间:2017-08-29 23:46:54

标签: react-native native-module

尝试创建我的第一个npm模块,以确定用户是否在手机上。它适用于React Native应用程序。无论我尝试什么,模块都返回undefined。 NativeModules似乎总是一个空对象。

请帮忙!以下是代码的链接。 var dogTypes = { GermanShepard: { color: "black and white" }, Beagle: { color: "brown and white" }, cheuwahwah: { color: "green and white" }, poodle: { color: "purple and white" }, }; for (var key in dogTypes) { for (var key2 in dogTypes[key]) { console.log(key, key2, dogTypes[key][key2]); } }中的export default RNOnPhoneCall;只返回undefined。如何链接index.js文件夹中的功能,并将其导出到ios?抬头,index.js尚未更新,只有android

Link to Github

3 个答案:

答案 0 :(得分:1)

尝试重建项目。我最近遇到了同样的问题,只是重建解决了它

答案 1 :(得分:0)

我没有在iOS文件中正确导出方法。这是解决方案,以及最终项目的链接。

react-native-check-phone-call-status on github

#import "RNCheckPhoneCallStatus.h"
#import "React/RCTLog.h"
#import <AVFoundation/AVAudioSession.h>
#import<CoreTelephony/CTCallCenter.h>
#import<CoreTelephony/CTCall.h>

@implementation RNCheckPhoneCallStatus

RCT_EXPORT_MODULE()

RCT_EXPORT_METHOD(get:(RCTResponseSenderBlock)callback)
{
    NSString *phoneStatus = @"PHONE_OFF";
    CTCallCenter *ctCallCenter = [[CTCallCenter alloc] init];
    if (ctCallCenter.currentCalls != nil)
    {
        NSArray* currentCalls = [ctCallCenter.currentCalls allObjects];
        for (CTCall *call in currentCalls)
        {
            if(call.callState == CTCallStateConnected)
            {
                phoneStatus = @"PHONE_ON";
            }
        }
    }
    callback(@[[NSNull null], phoneStatus]);
}

@end

答案 2 :(得分:0)

稍微窥探了一下之后,我发现Obj-C 文件没有添加到Xcode 的编译源中。跟着我: 假设文件名是:NotchNative.hNotchNative.m。如果未列出 NotchNative.m 文件,则 Xcode 不会编译这些文件,因此需要将其添加到编译源中。

enter image description here

按照图片中的步骤重新构建/运行 iOS 应用程序。 这肯定是 Xcode 方面的错误,因为在 Swift 项目中不会发生这种情况。