FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 其他方法

这里一般都是通用方法,不区分小程序、小游戏、H5应用

# 1.handleOpenURL

在小程序管理中,讲到使用URL Scheme 打开小程序时,需要在App 的(AppDelegate 或SceneDelegate)代理事件中调用该方法,才能打开指定的小程序。

/*
 处理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];

# 6.自定义事件数据上报

/// 自定义事件数据上报
/// @param appletId 小程序ID
/// @param eventName 自定义事件名称
/// @param data 自定义事件数据
- (BOOL)reportEventWithAppletId:(NSString *)appletId eventName:(NSString *)eventName data:(NSDictionary *)data;

示例代码:

BOOL result = [[FATClient sharedClient].toolManager reportEventWithAppletId:##appletId## eventName:##eventName## data:##data##];

# 7.宿主App输入日志到小程序的vConsole

/// 向小程序vConsole插入一条日志,单条日志长度最大为1024*4
/// @param logMsg 日志内容
/// @param consoleLevel 日志等级
/// @param appletId 小程序id
/// @param completion 调用结果回调:error code为FATErrorCodeAppletNotFound,未找到appletId指定小程序;error code为FATErrorCodeAppletConsoleNotReady,小程序控制台未准备好
- (void)addConsoleLog:(NSString *)logMsg
         consoleLevel:(FATConsoleLevel)consoleLevel
             appletId:(NSString *)appletId
           completion:(void (^)(BOOL success, FATError *error))completion;

示例代码:

[[FATClient sharedClient].toolManager addConsoleLog:@"xxxxx你需要打印的日志内容" consoleLevel:FATConsoleLevelWarn appletId:@"需要把日志输入在哪个小程序的vConsole上面的小程序id" completion:nil];

# 8. 获取小程序的loading视图

/// 获取小程序启动时的加载视图,小程序加载完成或小程序未打开,返回nil
/// @param appletId  小程序id,传nil则返回当前小程序的loading视图
- (FATBaseLoadingView *)getAppletTransitionLoadingView:(NSString *)appletId;

# 9. 生成SM2公私钥

国密SM2生成一对公钥和私钥

/**
 国密SM2生成公钥和私钥
 @return @{@"private_key": @"", @"public_key": @"" }
 */
- (NSDictionary *)SM2MakeKey;

# 10. 使用SM2 私钥解密

/**
 国密SM2解密
 
 @param cipherText  加密串
 @param privateKey  私钥
 @return 解密后的结果
 */
- (NSString *)decodeSM2:(NSString *)cipherText privateKey:(NSString *)privateKey;

# 11. 删除指定URL对应的cookie

/// 删除指定URL对应的cookie
/// @param URL 指定的URL
/// @param completionHandler  删除完毕的回调
- (void)deleteCookiesWithURL:(NSURL *)URL completionHandler:(void (^)(void))completionHandler;

示例代码:

[[FATClient sharedClient].toolManager deleteCookiesWithURL:[NSURL URLWithString:@"指定的url"] completionHandler:nil];

# 12. 删除所有cookie

/// 删除所有的cookies
/// @param completionHandler 删除完毕的回调
- (void)deleteAllCookiesWithCompletionHandler:(void (^)(void))completionHandler;

示例代码:

[[FATClient sharedClient].toolManager deleteAllCookiesWithCompletionHandler:nil];
© FinClip with ❤ , Since 2017