From f0cb4d289615c7c7a2c0c6bab3aaccd08d98a008 Mon Sep 17 00:00:00 2001 From: hujianhui Date: Wed, 22 Dec 2021 21:03:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0=E6=A1=8C=E9=9D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Classes/Api/MOPAppletDelegate.m | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/ios/Classes/Api/MOPAppletDelegate.m b/ios/Classes/Api/MOPAppletDelegate.m index d01d99a..0b0390a 100644 --- a/ios/Classes/Api/MOPAppletDelegate.m +++ b/ios/Classes/Api/MOPAppletDelegate.m @@ -9,6 +9,12 @@ #import "MopPlugin.h" #import "MopCustomMenuModel.h" +@interface NSString (FATEncode) +- (NSString *)fat_encodeString; + +@end + + @implementation MOPAppletDelegate + (instancetype)instance @@ -87,6 +93,11 @@ [channel invokeMethod:@"extensionApi:onCustomMenuClick" arguments:arguments result:^(id _Nullable result) { }]; + + if ([@"Desktop" isEqualToString:customMenu.menuId]) { + [self addToDesktopItemClick:appletInfo path:path]; + } + } - (void)clickCustomItemMenuWithInfo:(NSDictionary *)contentInfo completion:(void (^)(FATExtensionCode code, NSDictionary *result))completion { @@ -102,6 +113,12 @@ }]; } +- (void)clickCustomItemMenuWithInfo:(NSDictionary *)contentInfo inApplet:(FATAppletInfo *)appletInfo completion:(void (^)(FATExtensionCode code, NSDictionary *result))completion { + if ([@"Desktop" isEqualToString:contentInfo[@"menuId"]]) { + [self addToDesktopItemClick:appletInfo path:contentInfo[@"path"]]; + } +} + - (void)applet:(NSString *)appletId didOpenCompletion:(NSError *)error { if (!appletId) { return; @@ -113,4 +130,34 @@ }]; } +static NSString *scheme = @"fatae55433be2f62915";//App对应的scheme + +- (void)addToDesktopItemClick:(FATAppletInfo *)appInfo path:(NSString *)path { + NSMutableString *herf = [NSString stringWithFormat:@"%@://applet/appid/%@?", scheme, appInfo.appId].mutableCopy; + NSString *query = [NSString stringWithFormat:@"apiServer=%@&path=%@",appInfo.apiServer, path]; + + if ([appInfo.startParams[@"query"] length]) { + query = [NSString stringWithFormat:@"%@&query=%@",query, appInfo.startParams[@"query"]]; + } + [herf appendString:query.fat_encodeString]; + + NSMutableString *url = [NSMutableString stringWithFormat:@"%@/mop/scattered-page/#/desktopicon", appInfo.apiServer]; + [url appendFormat:@"?iconpath=%@", appInfo.appAvatar]; + [url appendFormat:@"&apptitle=%@", appInfo.appTitle.fat_encodeString]; + [url appendFormat:@"&linkhref=%@", herf]; + + NSLog(@"跳转到中间页面:%@", url); + + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; +} + + +@end + +@implementation NSString (FATEncode) + +- (NSString *)fat_encodeString { + return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes( NULL, (__bridge CFStringRef)self, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8); +} + @end