如何将 FinClip SDK 引入自有应用

网友投稿 664 2023-08-29

iOS 端

在 iOS 项目中引入 FinClip SDK 十分简单,参考如下步骤即可

第一步:获取 SDK KEY 及 SDK SECRET

如何将 FinClip SDK 引入自有应用

使用 SDK 需要申请 SDK KEY 及 SDK SECRET ,只有在 SDK 初始化的时候配置了正确的 SDK KEY 及 SDK SECRET ,才能初始化成功并正常使用。

创建应用

注册用户需要登录「应用管理-新增合作应用」,完成应用创建

获取 SDK KEY 及 SDK SECRET

创建应用并添加 Bundle ID后,若需要导出对应的 SDK KEY 与 SDK SECRET,请选择对应 Bundle ID 后的「复制」,即可通过 ctrl+v或command+v 进行粘贴操作:

请注意:

SDK KEY:是合作应用能使用小程序 SDK 的凭证,如果 SDK Key 校验失败,则SDK 的所有 Api 都无法使用。 SDK SECERT:是访问服务的安全证书,不要给第三方。

关于创建应用与获取 SDK KEY 及 SDK SECRET 的详细操作,见「介绍-操作指引-企业端操作指引-7.关联移动应用」一节。

第二步:集成 SDK

这一步我们在前面的文章中已经有过介绍,可以参考 iOS 如何引入一个 SDK 这篇文章,来引入 FinApplet.framework 和FinAppletExt.framework。

第三步:添加SDK头文件

在需要使用 FinClip 小程序 SDK 的地方,添加如下代码

arduino
复制代码
#import <FinApplet/FinApplet.h>

如果还集成了扩展 SDK,那么调用扩展 SDK 中的 api,还需要加上下面的代码:

arduino
复制代码
#import <FinAppletExt/FinAppletExt.h>

当然,最方便的方式是在 pch 文件中添加以上代码,这样在使用的地方就不用再引用了。

第四步:初始化 SDK

ini
复制代码
FATConfig *config = [FATConfig configWithAppSecret:@"SDK KEY" appKey:@"SDK SECRET"]; config.apiServer = @"https://www.finclip.com"; [[FATClient sharedClient] initWithConfig:config error:nil];

第五步:打开小程序

objectivec
复制代码
[[FATClient sharedClient] startRemoteApplet:@"app id" startParams:nil InParentViewController:self completion:^(BOOL result, NSError *error) { NSLog(@"result:%d---error:%@", result, error); }];

Android 端

我们 Android 开发者应该都知道 Java 的口号,write once , run anywhere,而小程序平台可以 write once , run any miniprogram,小程序容器平台可以承载千万种各类的小程序 , 今天我们来研究下如何让自己App成为个容器,运行各类小程序。 这里借助 FinClip 平台完成这一项功能。

Android FinClip SDK 集成

在集成 SDK 前需要先到平台申请 SDK Key 和 Secret 的,并且把你的小程序代码包上传到平台上,获得小程序 appID,客户端需要通过这些信息来驱动小程序,参照上面的文档操作就行了, 这里不重复叙述。

FinClip SDK 集成前,需得到如下信息

SDK Key SDK Secret apiURL //小程序平台的url appID // 小程序的appId

SDK 的集成主要由以下几步构成

获取最新的SDK 版本 添加依赖 修改混淆配置,添加 FinClip 的混淆配置 初始化 FinClip SDK 启动小程序

第一步:添加依赖

在 root 工程的 build.gradle 文件里面添加 Maven 仓库

arduino
复制代码
maven { url "https://gradle.finogeeks.club/repository/applet/" credentials { username "applet" password "123321" } }

随后,在 app module build.gradle 文件添加依赖

arduino
复制代码
implementation com.finogeeks.lib:finapplet:2.34.5

第二步:修改混淆配置,添加 FinClip 的混淆配置

在 App 的 proguard-rules.pro 文件里面添加混淆配置

kotlin
复制代码
-keep class com.finogeeks.** {*;}

第三步:初始化 FinClip SDK

建议放在 Application#onCreate 方法下去初始化 FinClip SDK,如下 APP_KEY,APP_SECRET 等字段是在 build.gradle 配置编译动态生成的

BuildConfig.APP_KEY   // Finclip SDK 的key 在平台上获取的 BuildConfig.APP_SECRET //Finclip SDK 的secret 在平台上获取的 FinAppConfig.ENCRYPTION_TYPE_SM // 加密类型 BuildConfig.API_URL //如果不是私有化部署默认填写 mp.finogeeks.com 这个就行了
typescript
复制代码
FinAppConfig config = new FinAppConfig.Builder() .setSdkKey(BuildConfig.APP_KEY) .setSdkSecret(BuildConfig.APP_SECRET) .setApiUrl(BuildConfig.API_URL) .setApiPrefix(BuildConfig.API_PREFIX) .setDebugMode(BuildConfig.DEBUG) .setEncryptionType(FinAppConfig.ENCRYPTION_TYPE_SM) .build(); FinAppClient.INSTANCE.init(this, config, new FinCallback<Object>() { @Override public void onSuccess(Object result) { Toast.makeText(MopApplication.this, "SDK初始化成功", Toast.LENGTH_SHORT).show(); // 注册自定义小程序API FinAppClient.INSTANCE.getExtensionApiManager().registerApi(new CustomApi(MopApplication.this)); // 注册自定义H5 API FinAppClient.INSTANCE.getExtensionWebApiManager().registerApi(new CustomH5Api(MopApplication.this)); // 设置IAppletHandler实现类 FinAppClient.INSTANCE.setAppletHandler(new AppletHandler(getApplicationContext())); // 在主进程设置"小程序进程调用主进程"的处理方法 // 开发者也可以选择在主进程其他合适的代码位置设置处理方法 FinAppClient.INSTANCE.getAppletApiManager() .setAppletProcessCallHandler(new IAppletApiManager.AppletProcessCallHandler() { @Override public void onAppletProcessCall(@NotNull String name, @Nullable String params, @Nullable FinCallback<String> callback) { if (callback != null) { if (name.equals(LoginApi.API_NAME_LOGIN)) { // 从主进程获取登录信息,返回给小程序进程 // 这里返回的是虚拟的用户登录信息,开发者请从APP里面自行获取用户登录信息 jsONObject jsonObject = new JSONObject(); try { jsonObject.put("userId", "123"); } catch (JSONException e) { e.printStackTrace(); } callback.onSuccess(jsonObject.toString()); } } } }); } @Override public void onError(int code, String error) { Toast.makeText(MopApplication.this, "SDK初始化失败", Toast.LENGTH_SHORT).show(); } @Override public void onProgress(int status, String error) { } });
arduino
复制代码
defaultConfig { applicationId "com.finogeeks.finclip.demo" minSdkVersion 19 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true buildConfigField "String", "APP_KEY", ""22LyZEib0gLTQdU3MUauATBwgfnTCJjdr7FCnywmAEM="" // App Secret buildConfigField "String", "APP_SECRET", ""bdfd76cae24d4313"" // API服务地址 buildConfigField "String", "API_URL", ""https://mp.finogeeks.com"" // API服务前缀 buildConfigField "String", "API_PREFIX", ""/api/v1/mop/"" ndk { abiFilters "x86", "armeabi", armeabi-v7a, arm64-v8a } }

第四步:启动小程序

ini
复制代码
Map<String, String> params = new HashMap<>(); params.put("path", "pages/index/index"); String appId = "5fc8934aefb8c600019e9747"; FinAppClient.INSTANCE.getAppletApiManager().startApplet(MainActivity.this, appId, params);

注意事项

小程序是多进程设计,Application#onCreate 会多次初始化,建议添加如果代码,阻止小程序进程去初始化你其他的组件。

typescript
复制代码
@Override public void onCreate() { super.onCreate(); if (FinAppClient.INSTANCE.isFinAppProcess(this)) { return; } }

由于 FinClip SDK 部分代码由 C++ 编写并且加固, 所以不能被压缩,需添加如下配置:

arduino
复制代码
packagingOptions { // libsdkcore.so是被加固过的,不能被压缩,否则加载动态库时会报错 doNotStrip "*/x86/libsdkcore.so" doNotStrip "*/x86_64/libsdkcore.so" doNotStrip "*/armeabi/libsdkcore.so" doNotStrip "*/armeabi-v7a/libsdkcore.so" doNotStrip "*/arm64-v8a/libsdkcore.so" }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从Flutter聊聊跨平台移动研发方案
下一篇:如果把小程序引入到智能汽车生态
相关文章

 发表评论

暂时没有评论,来抢沙发吧~