Ilj*_*lja 5 objective-c ios react-native
我已经为游戏中心身份验证制作了简单的本机 ios 模块,它运行良好,直到我cmd + r
在 ios 模拟器中重新加载我的应用程序。在我刷新我的应用程序并且这个事件发射器被称为我的应用程序崩溃后,出现以下错误。
桥未设置。这可能是因为您已经在 ASQGameCenter 中明确合成了桥接器,即使它是从 RCTEventEmitter 继承的。
这是模块
#import "ASQGameCenter.h"
@implementation ASQGameCenter
/**
* Globals
*/
NSString *eventName = @"ASQGameCenter:event";
BOOL isSubscribed = NO;
/**
* Utalise main queue
*/
- (dispatch_queue_t)methodQueue {
return dispatch_get_main_queue();
}
RCT_EXPORT_MODULE();
/**
* Declare events
*/
- (NSArray<NSString *> *)supportedEvents {
return @[ eventName ];
}
/**
* Authenticate user
*/
RCT_EXPORT_METHOD(authenticate
: (RCTPromiseResolveBlock)resolve rejecter
: (RCTPromiseRejectBlock)reject) {
if (!isSubscribed) {
isSubscribed = YES;
[self subscribe];
}
resolve(@"ASQGameCenter:subscribe");
}
/**
* Subscribe to auth changes
*/
- (void)subscribe {
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
UIViewController *rnView = [UIApplication sharedApplication].keyWindow.rootViewController;
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
if (error) {
[self sendEventWithName:eventName body:@{@"error" : error.description}];
}
else if (viewController != nil) {
[rnView presentViewController:viewController animated:YES completion:nil];
} else if (localPlayer.isAuthenticated) {
[self sendEventWithName:eventName body:@{@"playerID" : localPlayer.playerID}];
} else {
[self sendEventWithName:eventName body:@{@"error" : error.description}];
}
};
}
@end
Run Code Online (Sandbox Code Playgroud)
以及相关的头文件
#import <React/RCTEventEmitter.h>
#import "GameKit/GameKit.h"
@interface ASQGameCenter : RCTEventEmitter
@end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1303 次 |
最近记录: |