反应本机 NativeModules 空对象
React Native NativeModules Empty Object
尝试创建我的第一个 npm 模块以确定用户是否在 phone 上。它适用于 React Native 应用程序。无论我尝试什么,模块 return 都未定义。 NativeModules 始终显示为空对象。
请帮忙!下面是代码的 link 。 export default RNOnPhoneCall;
在 index.js
中只会 return 未定义。如何 link ios
文件夹中的函数,并将它们导出到 index.js
中?注意,android
还不是最新的,只有 ios
.
尝试重建您的项目。我最近遇到了同样的问题,只是重建解决了它
我没有在 iOS 文件中正确导出方法。这是解决方案,以及对最终项目的 link。
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
仔细查看后,我发现 Xcode 中的编译源中没有添加 Obj-C 文件。跟着我:
假设文件名为:NotchNative.h
和 NotchNative.m
。如果未列出 NotchNative.m
文件,则 Xcode 不会编译这些文件,因此需要将其添加到编译源中。
按照图片中的步骤操作,然后再次 rebuild/run iOS 应用程序。
这肯定是 Xcode 方面的错误,因为在 Swift 项目的情况下不会发生这种情况。
尝试创建我的第一个 npm 模块以确定用户是否在 phone 上。它适用于 React Native 应用程序。无论我尝试什么,模块 return 都未定义。 NativeModules 始终显示为空对象。
请帮忙!下面是代码的 link 。 export default RNOnPhoneCall;
在 index.js
中只会 return 未定义。如何 link ios
文件夹中的函数,并将它们导出到 index.js
中?注意,android
还不是最新的,只有 ios
.
尝试重建您的项目。我最近遇到了同样的问题,只是重建解决了它
我没有在 iOS 文件中正确导出方法。这是解决方案,以及对最终项目的 link。
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
仔细查看后,我发现 Xcode 中的编译源中没有添加 Obj-C 文件。跟着我:
假设文件名为:NotchNative.h
和 NotchNative.m
。如果未列出 NotchNative.m
文件,则 Xcode 不会编译这些文件,因此需要将其添加到编译源中。
按照图片中的步骤操作,然后再次 rebuild/run iOS 应用程序。 这肯定是 Xcode 方面的错误,因为在 Swift 项目的情况下不会发生这种情况。