# 其他方法
# 1.handleOpenURL
在小程序管理中,讲到使用URL Scheme 打开小程序时,需要在App 的(AppDelegate 或SceneDelegate)代理事件中调用该方法,才能打开指定的小程序。
/*objectivec
处理URL
@param URL 具体的URL路由
URL格式:${scheme}://applet/appid/${appId}?path=${path}&query=${encode过的queryDict}&apiServer=${apiServer}
例如:fatae55433be2f62915://applet/appid/617bb42f530fb30001509b27?path=/packages/d/index&query=key%3Dvalue%26name%3Dtable&apiServer=https://www.finclip.com/
其中,必须有的是scheme和appId,如:fatae55433be2f62915://applet/appid/617bb42f530fb30001509b27
*/
- (BOOL)handleOpenURL:(NSURL *)URL;
如果希望在Safari浏览器或其他App中打开自己的APP中的小程序,需要实现- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
方法。
示例代码:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
if ([[FATClient sharedClient] handleOpenURL:url]) {
return YES;
}
return YES;
}
# 2.handleOpenUniversalLinkURL
如果想要使用Universal Link 方式打开小程序,则需要在合适的代理方法中调用该方法。
/*
处理Universal Link
@param URL Universal Link URL
URL格式:${UniversalLink}?appid=${appId}&path=${path}&query=${encode过的queryDict}&apiServer=${apiServer}
例如:https://www.finclip.com/mop/scattered-page/#/mop-download?appid=xx&query=xxx&path=xxx
其中,必须有的是UniversalLink和appId,如https://www.finclip.com/mop/scattered-page/#/mop-download?appid=xx
*/
- (BOOL)handleOpenUniversalLinkURL:(NSURL *)URL;
同上面的handleOpenURL一样,如果想要支持universal link 的方式打开小程序。也得实现- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
方法。
示例代码:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
NSLog(@"url = %@",url.absoluteString);
return [[FATClient sharedClient] handleOpenUniversalLinkURL:url];
}
return YES;
}
# 3.更多面板里的处理事件
当我们自定义更多小程序面板时,虽然UI是自己设计的,但是部分功能还可以复用SDK里的,比如 关于页面、设置页面、投诉反馈、转发等。可以在按钮的点击事件里调用FATMoreMenuHelper
下面的api来实现跳转和相应的逻辑。
# 3.1 跳转至关于小程序页面
/// 打开小程序的关于页面
/// @param appletId 小程序id
+ (void)goToAboutPage:(NSString *)appletId;
示例代码:
[FATMoreMenuHelper goToAboutPage:@"6007a0a122bad000012813eb"];
# 3.2 触发转发事件
/// 触发转发事件,用来获取转发时用到的小程序信息, 获取到小程序信息后,会触发- (void)forwardAppletWithInfo:(NSDictionary *)contentInfo completion:(void (^)(FATExtensionCode, NSDictionary *))completion 这个回调
/// @param appletId 小程序id
+ (void)invokeForwardMenuAction:(NSString *)appletId;
示例代码:
[FATMoreMenuHelper invokeForwardMenuAction:@"6007a0a122bad000012813eb"];
# 3.3 跳转至投诉反馈页面
/// 打开小程序的意见反馈页面
/// @param appletId 小程序id
+ (void)goToFeedbackPage:(NSString *)appletId;
示例代码:
[FATMoreMenuHelper goToFeedbackPage:@"6007a0a122bad000012813eb"];
# 3.4 跳转至设置页面
/// 打开小程序的设置页面
/// @param appletId 小程序id
+ (void)goToSettingPage:(NSString *)appletId;
示例代码:
[FATMoreMenuHelper goToSettingPage:@"6007a0a122bad000012813eb"];
# 3.5 获取小程序的debug模式
/// 获取小程序是否打开debug模式
/// @param appletId 小程序id
+ (BOOL)isEnableAppletDebug:(NSString *)appletId;
示例代码:
BOOL enableDeubg = [FATMoreMenuHelper isEnableAppletDebug:@"6007a0a122bad000012813eb"];
# 3.6 设置小程序的debug模式
/// 打开/关闭小程序的debug模式 如果config设置了enableAppletDebug为FATBOOLStateTrue,执行打开/关闭debug模式操作会无效
/// @param appletId 小程序id
/// @param enable 允许debug模式
+ (void)setEnableAppletDebug:(NSString *)appletId enable:(BOOL)enable;
示例代码:
[FATMoreMenuHelper setEnableAppletDebug:@"6007a0a122bad000012813eb" enable:YES];
# 3.7 检测小程序是否实现自定义菜单功能
由于部分自定义菜单需要小程序返回数据,功能类似onShareAppMessage的实现。可以调用如下方法判断小程序当前页面是否实现了on{menuId}ButtonHandler方法。
/// 检测小程序是否实现自定义菜单功能
/// @param appletId 小程序id
/// @param menuIds 自定义菜单ID数组
/// @param complete 结果回调
+ (void)checkMenus:(NSString *)appletId menuIds:(NSArray<NSString *> *)menuIds complete:(void(^)(NSArray *result))complete;
示例代码:
[FATMoreMenuHelper checkMenus:@"6007a0a122bad000012813eb" menuIds:@[@"Dingding", @"Weibo"] complete:^(NSArray * _Nonnull result) {
}];
# 3.8 获取自定义菜单项的数据
针对于需要小程序返回数据的自定义菜单项,可以调用该方法获取到对应小程序页面on{menuId}ButtonHandler方法返回的小程序信息。
/// 获取自定义菜单项的数据(需要小程序配合实现的菜单项,需要小程序提供额外调用参数)
/// @param appletId 小程序id
/// @param menuId 菜单id
/// @param complete 结果回调
+ (void)getMiniProgramTypeMenuData:(NSString *)appletId menuId:(NSString *)menuId complete:(void(^)(NSDictionary *result,FATAppletInfo *appletInfo))complete;
示例代码:
[FATMoreMenuHelper getMiniProgramTypeMenuData:@"6007a0a122bad000012813eb" menuId:@"Weibo" complete:^(NSDictionary * _Nonnull result, FATAppletInfo * _Nonnull appletInfo) {
}];
# 4.生成token
/// 生成token。
/// 根据原始字符串,加上特殊字符,使用国密生成token。
/// @param originText 原始字符串
- (NSString *)generateTokenWithOriginText:(NSString *)originText;
示例代码:
NSString *token = [[FATClient sharedClient].toolManager generateTokenWithOriginText:@"6007a0a122bad000012813eb"];
# 5.解密token
/// 解密token,获取token里的原始字符串
/// @param token 使用generateTokenWithOriginText:生成的token
- (NSString *)originTextWithToken:(NSString *)token;
示例代码:
NSString *originText = [[FATClient sharedClient].toolManager originTextWithToken:token];