// // MOP_registerExtensionApi.m // mop // // Created by 康旭耀 on 2020/4/20. // #import "MOP_registerExtensionApi.h" #import "MopPlugin.h" #import @implementation MOP_registerExtensionApi - (void)setupApiWithSuccess:(void (^)(NSDictionary * _Nonnull))success failure:(void (^)(id _Nullable))failure cancel:(void (^)(void))cancel { NSLog(@"MOP_registerExtensionApi"); FlutterMethodChannel *channel = [[MopPlugin instance] methodChannel]; [[FATClient sharedClient] registerExtensionApi:self.name handler:^(FATAppletInfo *appletInfo, id param, FATExtensionApiCallback callback) { NSLog(@"channel:%@---invoke ExtensionApi:%@, param:%@", channel, self.name, param); NSString *invokeMessage = [NSString stringWithFormat:@"channel:[%@]---invoke ExtensionApi:[%@]", [channel description], self.name]; [[FATClient sharedClient].toolManager addConsoleLog:invokeMessage consoleLevel:FATConsoleLevelLog appletId:appletInfo.appId completion:nil]; NSString *api = [@"extensionApi:" stringByAppendingString:self.name]; [channel invokeMethod:api arguments:param result:^(id _Nullable result) { NSLog(@"extensionApi reslut:%@",result); NSString *callbackMessage = [NSString stringWithFormat:@"extensionApi [%@] callbck ",self.name]; [[FATClient sharedClient].toolManager addConsoleLog:callbackMessage consoleLevel:FATConsoleLevelLog appletId:appletInfo.appId completion:nil]; // 先判断是否flutter发生错误 BOOL isValid = [result isKindOfClass:[NSDictionary class]]; if (!isValid) { NSLog(@"extensionApi reslut is not NSDictionary"); callback(FATExtensionCodeFailure,nil); return; } // 再判断回调是否为失败 BOOL hasError = [[result allKeys] containsObject:@"errMsg"]; if (hasError) { NSString *errMsg = result[@"errMsg"]; NSString *errPrefix = [NSString stringWithFormat:@"%@:fail", self.name]; BOOL isFail = [errMsg hasPrefix:errPrefix]; if (isFail) { NSLog(@"extensionApi reslut:fail"); callback(FATExtensionCodeFailure,nil); return; } } // 其他的按成功处理 NSLog(@"extensionApi callback:%@",result); callback(FATExtensionCodeSuccess,result); }]; }]; success(@{}); } @end