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

# 其他方法

# 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];
© 2022 FinClip with ❤

👋🏻 嘿,你好!

「FinClip」是一套基于云原生框架设计的小程序容器。能够让任何移动应用在集成小程序SDK之后,获得可用、安全的小程序运行能力。

>> 点我免费注册体验

查看产品文档
了解与 FinClip 相关的一切信息

产品博客 👈  了解产品更新与核心功能介绍
资源下载 👈  获取小程序 SDK 与开发工具
文档中心 👈  查询 FinClip 小程序开发指南与答疑

商务咨询热线
预约 FinClip 产品介绍,咨询商务报价或私有化部署事宜

0755-86967467

获取产品帮助
联系 FinClip 技术顾问,获取产品资料或加入开发者社群

联系线上
人工客服

或 👉  点击这里,提交咨询工单