You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
6.9 KiB
146 lines
6.9 KiB
#import "AppDelegate.h" |
|
#import "GeneratedPluginRegistrant.h" |
|
#import "DCUniMP.h" |
|
#import "UniappPlugin.h" |
|
#import "WXApi.h" |
|
|
|
|
|
@implementation AppDelegate |
|
|
|
- (BOOL)application:(UIApplication *)application |
|
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { |
|
[GeneratedPluginRegistrant registerWithRegistry:self]; |
|
// Override point for customization after application launch. |
|
|
|
|
|
|
|
// 配置参数 |
|
NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:launchOptions]; |
|
// 设置 debug YES 会在控制台输出 js log,默认不输出 log,注:需要引入 liblibLog.a 库 |
|
[options setObject:[NSNumber numberWithBool:YES] forKey:@"debug"]; |
|
[DCUniMPSDKEngine initSDKEnvironmentWithLaunchOptions:options ]; |
|
|
|
FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController; |
|
FlutterMethodChannel* uniAppChannel = [FlutterMethodChannel methodChannelWithName:@"min" binaryMessenger:(NSObject<FlutterBinaryMessenger> *)controller]; |
|
UniappPlugin * plugin = [[UniappPlugin alloc] init]; |
|
[DCUniMPSDKEngine setDelegate:plugin]; |
|
[uniAppChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { |
|
NSString * method = call.method; |
|
if ([method isEqual:@"initialize"] || [method isEqual:@"isInitialize"]) { |
|
result([NSNumber numberWithBool:YES]); |
|
} |
|
//是否已经解压过了 |
|
if ([method isEqual:@"isExistsApp"]) { |
|
NSString * appid = [call.arguments valueForKey:@"appid"]; |
|
[DCUniMPSDKEngine isExistsApp:appid] ? result([NSNumber numberWithBool:YES]): result([NSNumber numberWithBool:NO]); |
|
} |
|
if ([method isEqual:@"closeCurrentApp"]) { |
|
[DCUniMPSDKEngine closeUniMP]; |
|
} |
|
if ([method isEqual:@"getAppBasePath"]) { |
|
NSString * appid = [call.arguments valueForKey:@"appid"]; |
|
result([DCUniMPSDKEngine getAppRunPathWithAppid:appid]); |
|
} |
|
if ([method isEqual:@"runingAppid"]) { |
|
result([DCUniMPSDKEngine getActiveUniMPAppid]); |
|
} |
|
if ([method isEqual:@"currentPageUrl"]) { |
|
result([DCUniMPSDKEngine getCurrentPageUrl]); |
|
} |
|
if ([method isEqual:@"startMin"]) { |
|
NSLog(@"call.arguments:%@",call.arguments); |
|
NSString * appid = [call.arguments valueForKey:@"appid"]; |
|
NSDictionary* dict = [call.arguments objectForKey:@"json"]; |
|
[plugin openUniApp:appid dict:dict]; |
|
result(@""); |
|
} |
|
if ([method isEqual:@"getAppVersionInfo"]) { |
|
NSString * appid = [call.arguments valueForKey:@"appid"]; |
|
result([[DCUniMPSDKEngine getUniMPVersionInfoWithAppid:appid] valueForKey:@"name"]); |
|
} |
|
if ([method isEqual:@"reloadWgt"]) { |
|
NSString * appid = [call.arguments valueForKey:@"appid"]; |
|
NSString * wgtPath = [call.arguments valueForKey:@"wgtPath"]; |
|
BOOL r = [DCUniMPSDKEngine releaseAppResourceToRunPathWithAppid:appid resourceFilePath:wgtPath]; |
|
r ? result([NSNumber numberWithBool:YES]) : result([NSNumber numberWithBool:NO]); |
|
} |
|
//这是原来的下载 |
|
if ([call.method isEqual:@"openUniApp"]) { |
|
result(@"这是原来的下载。"); |
|
} |
|
//result(FlutterMethodNotImplemented); |
|
}]; |
|
|
|
// 消息内容获取 |
|
__block NSDictionary *remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; |
|
NSLog(@"notification dic: %@", remoteNotification); |
|
|
|
FlutterMethodChannel* bridgeAppChannel = [FlutterMethodChannel methodChannelWithName:@"bridge" binaryMessenger:(NSObject<FlutterBinaryMessenger> *)controller]; |
|
[bridgeAppChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { |
|
NSString * method = call.method; |
|
if ([method isEqual:@"action"]) { |
|
if (remoteNotification != NULL) { |
|
result(remoteNotification[@"custom"]); |
|
remoteNotification = nil; |
|
} |
|
result(@""); |
|
} |
|
if ([method isEqual:@"toAppStore"]) { |
|
NSString *appURL = @"https://itunes.apple.com/cn/app/1575124838?action=write-review"; |
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]]; |
|
result(@""); |
|
} |
|
//result(FlutterMethodNotImplemented); |
|
}]; |
|
|
|
return [super application:application didFinishLaunchingWithOptions:launchOptions]; |
|
} |
|
|
|
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { |
|
NSLog(@"userActivity%@", userActivity.webpageURL); |
|
|
|
NSArray *params = [userActivity.webpageURL.query componentsSeparatedByString:@"&"]; |
|
|
|
__block NSString *customParam = @""; |
|
|
|
for (NSString *string in params) { |
|
NSLog(@"userActivity%@", string); |
|
NSArray *array =[string componentsSeparatedByString:@"="]; |
|
if ([array[0] isEqual:@"id"]) { |
|
customParam = [NSString stringWithFormat:@"{\"typed\":1,\"info\":\"%@\"}", array[1]]; |
|
} |
|
} |
|
|
|
NSLog(@"userActivity%@", customParam); |
|
FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController; |
|
FlutterMethodChannel* bridgeAppChannel = [FlutterMethodChannel methodChannelWithName:@"bridge" binaryMessenger:(NSObject<FlutterBinaryMessenger> *)controller]; |
|
[bridgeAppChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { |
|
NSString * method = call.method; |
|
if ([method isEqual:@"action"]) { |
|
if (customParam != NULL) { |
|
result(customParam); |
|
customParam = @""; |
|
} |
|
result(@""); |
|
} |
|
if ([method isEqual:@"toAppStore"]) { |
|
NSString *appURL = @"https://itunes.apple.com/cn/app/1575124838?action=write-review"; |
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]]; |
|
result(@""); |
|
} |
|
//result(FlutterMethodNotImplemented); |
|
}]; |
|
// 通过通用链接唤起 App |
|
[DCUniMPSDKEngine application:application continueUserActivity:userActivity]; |
|
return YES; |
|
} |
|
|
|
//- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { |
|
// return [WXApi handleOpenURL:url delegate:[FluwxResponseHandler responseHandler]]; |
|
//} |
|
// |
|
//- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{ |
|
// return [WXApi handleOpenURL:url delegate:[FluwxResponseHandler responseHandler]]; |
|
//} |
|
|
|
@end
|
|
|