diff --git a/ios/Classes/Api/MOP_registerExtensionApi.m b/ios/Classes/Api/MOP_registerExtensionApi.m index c1dedaf..04a5d99 100644 --- a/ios/Classes/Api/MOP_registerExtensionApi.m +++ b/ios/Classes/Api/MOP_registerExtensionApi.m @@ -23,9 +23,10 @@ [channel invokeMethod:api arguments:param result:^(id _Nullable result) { NSLog(@"extensionApi reslut:%@",result); // 先判断是否flutter发生错误 - BOOL isFlutterError = [result isKindOfClass:[FlutterError class]] || result == FlutterMethodNotImplemented; - if (isFlutterError) { - NSLog(@"extensionApi reslut:fail"); +// BOOL isFlutterError = [result isKindOfClass:[FlutterError class]] || result == FlutterMethodNotImplemented; + BOOL isValid = [result isKindOfClass:[NSDictionary class]]; + if (!isValid) { + NSLog(@"extensionApi reslut is not NSDictionary"); callback(FATExtensionCodeFailure,nil); return; } diff --git a/ios/mop.podspec b/ios/mop.podspec index 278fe67..365f8d0 100644 --- a/ios/mop.podspec +++ b/ios/mop.podspec @@ -17,7 +17,7 @@ A finclip miniprogram flutter sdk. s.dependency 'Flutter' s.ios.deployment_target = '9.0' - s.dependency 'FinApplet' , '2.38.5' - s.dependency 'FinAppletExt' , '2.38.5' + s.dependency 'FinApplet' , '2.38.7' + s.dependency 'FinAppletExt' , '2.38.7' end diff --git a/lib/mop.dart b/lib/mop.dart index 4854d9d..6744fd6 100644 --- a/lib/mop.dart +++ b/lib/mop.dart @@ -7,7 +7,8 @@ import 'package:mop/api.dart'; typedef MopEventCallback = void Function(dynamic event); typedef MopEventErrorCallback = void Function(dynamic event); -typedef ExtensionApiHandler = Future Function(dynamic params); +typedef ExtensionApiHandler = Future> Function(dynamic params); +typedef MopAppletHandler = Future Function(dynamic params); class FinStoreConfig { ///创建应用时生成的SDK Key @@ -328,6 +329,8 @@ class Mop { late int eventId = 0; final List> _mopEventQueye = >[]; + final Map _appletHandlerApis = {}; + final Map _extensionApis = {}; Map _webExtensionApis = {}; @@ -371,6 +374,11 @@ class Mop { if (handler != null) { return await handler(call.arguments); } + + final apiHandler = _appletHandlerApis[name]; + if (apiHandler != null) { + return await apiHandler(call.arguments); + } } else if (call.method.startsWith("webExtentionApi:")) { final name = call.method.substring("webExtentionApi:".length); final handler = _webExtensionApis[name]; @@ -572,13 +580,13 @@ class Mop { /// 注册小程序事件处理 /// void registerAppletHandler(AppletHandler handler) { - _extensionApis["forwardApplet"] = (params) async { + _appletHandlerApis["forwardApplet"] = (params) async { handler.forwardApplet(Map.from(params)); }; - _extensionApis["getUserInfo"] = (params) { + _appletHandlerApis["getUserInfo"] = (params) { return handler.getUserInfo(); }; - _extensionApis["getCustomMenus"] = (params) async { + _appletHandlerApis["getCustomMenus"] = (params) async { final res = await handler.getCustomMenus(params["appId"]); List> list = []; res.forEach((element) { @@ -592,14 +600,14 @@ class Mop { debugPrint("registerAppletHandler getCustomMenus list $list"); return list; }; - _extensionApis["onCustomMenuClick"] = (params) async { + _appletHandlerApis["onCustomMenuClick"] = (params) async { return handler.onCustomMenuClick( params["appId"], params["path"], params["menuId"], params["appInfo"]); }; - _extensionApis["appletDidOpen"] = (params) async { + _appletHandlerApis["appletDidOpen"] = (params) async { return handler.appletDidOpen(params["appId"]); }; - _extensionApis["getPhoneNumber"] = (params) async { + _appletHandlerApis["getPhoneNumber"] = (params) async { return handler.getMobileNumber((params0) => {_channel.invokeMethod("getPhoneNumberResult", params0)}); };