React native 反应本机NativeModules空对象

React native 反应本机NativeModules空对象,react-native,native-module,React Native,Native Module,尝试创建我的第一个npm模块,以确定用户是否在电话上。它适用于React本机应用程序。无论我尝试什么,模块都返回未定义。NativeModules始终显示为空对象 请帮忙!下面是代码的链接导出默认RNOnPhoneCall将只返回未定义。如何链接ios文件夹中的函数,并将它们导出到index.js?请注意,android还不是最新版本,只是ios 尝试重建项目。我最近遇到了同样的问题,只是简单地重新构建就解决了它我没有在iOS文件中正确导出该方法。以下是解决方案,以及最终项目的链接 #导入“R

尝试创建我的第一个npm模块,以确定用户是否在电话上。它适用于React本机应用程序。无论我尝试什么,模块都返回未定义。NativeModules始终显示为空对象

请帮忙!下面是代码的链接<代码>导出默认RNOnPhoneCallindex.js中的code>将只返回未定义。如何链接ios文件夹中的函数,并将它们导出到
index.js
?请注意,
android
还不是最新版本,只是
ios


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

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

#导入“RNCheckPhoneCallStatus.h”
#导入“React/RCTLog.h”
#进口
#进口
#进口
@实现RNCheckPhoneCallStatus
RCT_导出_模块()
RCT_导出_方法(get:(rctreponsesenderblock)回调)
{
NSString*phoneStatus=@“电话关闭”;
CTCallCenter*CTCallCenter=[[CTCallCenter alloc]init];
if(ctCallCenter.currentCalls!=nil)
{
NSArray*currentCalls=[ctCallCenter.currentCalls allObjects];
用于(CTCall*调用当前调用)
{
if(call.callState==CTCallStateConnected)
{
phoneStatus=@“电话开启”;
}
}
}
回调(@[[NSNull null],phoneStatus]);
}
@结束

仔细研究后,我发现Obj-C文件没有添加到Xcode中的编译源代码中。跟我来: 假设文件名是:
notchntial.h
notchntial.m
。如果未列出
notchntial.m
文件,则Xcode不会编译这些文件,因此需要将其添加到编译源中

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

#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