Error: @"Bridge module %@ does not conform to RCTBridgeModule"
Error: @"Bridge module %@ does not conform to RCTBridgeModule"
我是 React Native 的新手,我想使用本机模块来获取 phone 的电池状态。问题是我遇到了休闲错误:@"Bridge module %@
does not conform to RCTBridgeModule"。我猜它与 class 相关,但我不熟悉 Objective-C 语法。 即使答案很简单,我也非常感谢在此领域的任何帮助。谢谢!
我的 BatteryStatus.h 看起来像这样:
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
@interface BatteryStatus : RCTEventEmitter <RCTBridgeModule>
@end
我的 BatteryStatus.m 看起来像这样:
#import "BatteryStatus.h"
@implementation BatteryStatus
RCT_EXPORT_MODULE(BatteryStatus)
- (instancetype)init
{
if ((self = [super init])) {
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
}
return self;
}
RCT_EXPORT_METHOD(hide) {
}
RCT_EXPORT_METHOD(updateBatteryLevel:(RCTResponseSenderBlock)callback)
{
callback(@[[self getBatteryStatus]]);
}
//manually get battery status by calling following method
-(NSDictionary*)getBatteryStatus
{
float batteryLevel = [UIDevice currentDevice].batteryLevel;
NSObject* currentLevel = nil;
currentLevel = [NSNumber numberWithFloat:(batteryLevel * 100)];
NSMutableDictionary* batteryData = [NSMutableDictionary dictionaryWithCapacity:2];
[batteryData setObject:currentLevel forKey:@"level"];
return batteryData;
}
@end
我正在尝试像这样在 React Native 中使用它:
import { Text, View, NativeModules } from 'react-native';
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {
batteryLevel: null,
};
}
componentDidMount() {
NativeModules.BatteryStatus.updateBatteryLevel((info) => {
console.log(info.level);
const level = Math.ceil(info.level);
this.setState({ batteryLevel: level });
});
}
render() {
return (
<View>
<Text>TEST</Text>
</View>
);
}
}
export default App;
在您的情况下,您不应该继承自 RCTEventEmitter
。如果您想将事件从本机模块发送到监听模块特定事件的 JS,则只需要这样做;在这种情况下,您需要在本机模块中实现 supportedEvents
方法并指定您支持的事件的名称。 您收到此异常是因为您没有实现此方法。
因为你没有发送任何事件,BatteryStatus
应该继承基本的 NSObject
class 像这样:
@interface BatteryStatus : NSObject <RCTBridgeModule>
@end
我建议您查看创建 native ios modules 的 RN 指南。
我是 React Native 的新手,我想使用本机模块来获取 phone 的电池状态。问题是我遇到了休闲错误:@"Bridge module %@
does not conform to RCTBridgeModule"。我猜它与 class 相关,但我不熟悉 Objective-C 语法。 即使答案很简单,我也非常感谢在此领域的任何帮助。谢谢!
我的 BatteryStatus.h 看起来像这样:
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
@interface BatteryStatus : RCTEventEmitter <RCTBridgeModule>
@end
我的 BatteryStatus.m 看起来像这样:
#import "BatteryStatus.h"
@implementation BatteryStatus
RCT_EXPORT_MODULE(BatteryStatus)
- (instancetype)init
{
if ((self = [super init])) {
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
}
return self;
}
RCT_EXPORT_METHOD(hide) {
}
RCT_EXPORT_METHOD(updateBatteryLevel:(RCTResponseSenderBlock)callback)
{
callback(@[[self getBatteryStatus]]);
}
//manually get battery status by calling following method
-(NSDictionary*)getBatteryStatus
{
float batteryLevel = [UIDevice currentDevice].batteryLevel;
NSObject* currentLevel = nil;
currentLevel = [NSNumber numberWithFloat:(batteryLevel * 100)];
NSMutableDictionary* batteryData = [NSMutableDictionary dictionaryWithCapacity:2];
[batteryData setObject:currentLevel forKey:@"level"];
return batteryData;
}
@end
我正在尝试像这样在 React Native 中使用它:
import { Text, View, NativeModules } from 'react-native';
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {
batteryLevel: null,
};
}
componentDidMount() {
NativeModules.BatteryStatus.updateBatteryLevel((info) => {
console.log(info.level);
const level = Math.ceil(info.level);
this.setState({ batteryLevel: level });
});
}
render() {
return (
<View>
<Text>TEST</Text>
</View>
);
}
}
export default App;
在您的情况下,您不应该继承自 RCTEventEmitter
。如果您想将事件从本机模块发送到监听模块特定事件的 JS,则只需要这样做;在这种情况下,您需要在本机模块中实现 supportedEvents
方法并指定您支持的事件的名称。 您收到此异常是因为您没有实现此方法。
因为你没有发送任何事件,BatteryStatus
应该继承基本的 NSObject
class 像这样:
@interface BatteryStatus : NSObject <RCTBridgeModule>
@end
我建议您查看创建 native ios modules 的 RN 指南。