2

尝试创建我的第一个 npm 模块以确定用户是否在打电话。它适用于 React Native 应用程序。无论我尝试什么,模块都会返回未定义。NativeModules 总是看起来是一个空对象。

请帮忙!下面是代码的链接。export default RNOnPhoneCall;inindex.js只会返回未定义的。如何链接ios文件夹中的功能,并将它们导出index.js?注意,android还不是最新的,只有ios.

链接到 Github

4

3 回答 3

1

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

于 2017-09-06T10:05:31.613 回答
1

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

github 上的 react-native-check-phone-call-status

#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
于 2017-09-06T22:29:36.047 回答
1

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

在此处输入图像描述

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

于 2021-06-16T11:36:29.703 回答