前置条件
环境要求
iOS >= 9.0
Xcode >= 10.0
组件依赖
tars
MQQComponents
TMFShark
SSZipArchive
PromiseObjC
MJRefresh
SocketRocket
Brotli
CocoaAsyncSocket
集成方式
TCMPPSDK 可通过以下方式进行集成:
CocoaPods 集成
手动集成
SPM 集成
CocoaPods 集成
1. 在您项目中的 Podfile 文件里添加源及小程序依赖模块:
#Pods 仓库
source 'https://github.com/TCMPP-Team/tcmpp-repo.git'
target 'YourTarget' do
# ――― TCSAS -----―――――――――――――――――――――――――――――――――――――――――――――――――――――--- #
pod 'TCMPPSDK'
pod 'TCMPPExtScanCode'
pod 'TCMPPExtMedia'
#预置基础库
pod 'TCSASBaseLib'
end
其中,YourTarget 为您的项目需要引入 SDK 的 target 的名字。
2. Terminal cd 到 Podfile 文件所在目录,并执行 pod install 进行组件安装。
手动集成
1. 添加 SDK
将 SDK 组件的目录添加到您项目的 Xcode Project 中的合适位置,并选择合适的 target。
您可以把组件的目录从 Finder 直接拖动到 Xcode Project 中,以进行快捷添加。
2. 添加依赖的 SDK
把 SDK 依赖的所有组件添加到项目中,依赖的组件列表,请参见前置条件中的 组件依赖。 3. 添加依赖的系统库
把 SDK 依赖的系统库添加到项目中,在 Xcode 中打开 project 设置页,选中相关的 target,单击 General,在“Linked Frameworks and Libraries”中进行添加。
4. 系统库依赖如下:
Foundation.framework
CoreTelephony.framework
CFNetwork.framework
Security.framework
SystemConfiguration.framework
CoreService.framework
CoreFoundation.framework
libz.tbd
libc++.tbd
libc.tbd
libbz2.tbd
libsqlite3.0.tbd
5. project 设置
添加 SDK 后,需要进行相关的 Project 设置。在 Xcode 中打开 Project 设置页,选中相关的 target,进行以下设置:
选择 Build Settings > Linking > Other Linker Flags,增加:-ObjC。
选择 Build Settings > Apple Clang - Custom Compiler Flags > Other C Flags,增加:
-fshort-wchar
-D__FIXWCHART__
选择 Build Phases > Copy Bundle Resources,添加 SDK 资源文件:
SPM 工程集成
选择版本规则(建议使用 Up to Next Major Version),最后点击 Add Package 按钮。
添加 SDK 后,您需要在 Xcode 中进行以下项目设置:
选择 Build Settings > Linking > Other Linker Flags 然后添加 -ObjC。
初始化配置
控制台创建应用
小程序 SDK 的初始化依赖于从小程序控制台获取的小程序加密密钥或 SDK 配置文件;如果您还未在控制台创建应用,可以参考以下流程进行创建。
登录控制台后,请单击创建 superapp:
填写 superapp 信息:
必填信息:
Superapp 名称:支持中文、大小写英文字母、数字、空格和部分特殊符号("+"、"="、","、"."、"@"、"-"、"_"),3-64个字符。
非必填信息:
Superapp 说明:此处可填写 superapp 的简介信息,主要用于团队内部查看。
Superapp icon:支持上传 jpg、png 格式的方形图片、分辨率为128*128,图片大小在 2M 以内,若不上传 logo 图片,则使用系统默认 icon 图片。
Scheme:只能包含小写字母和数字,不超过64个字符。设置 scheme 后,小程序(或小游戏)的二维码信息会包含 scheme,使用手机系统自带的扫码功能,可直接唤起 superapp 并打开小程序(或小游戏)。
添加应用包名:
添加 Bundle ID 时,需要选择和填写的字段有:
类型:类型选择后不允许修改,非生产类型的包名仅用于 superapp 测试版本使用,每个月有使用设备数量限制(最多500)。
Bundle ID:只能包含小写字母(a-z)、数字(0-9)、点(.)和连字符(-),不超过 255 个字符。建议采用反向域名表示法,例如 com.example.myapp。
下载地址:只能包含大小写字母(a-z)、数字(0-9)、点(.)、连字符(-)和斜杠(/),不超过 2048 个字符。
获取应用配置完成初始化
方式一:使用加密密钥
该方式需要 SDK 版本 ≥ 2.3.8 才能使用,如果 SDK 版本低于2.3.8,请使用方法二配置文件进行配置。
生成加密密钥
每个 Package name/Bundle Id 都可生成唯一的加密密钥,SDK 使用该密钥进行初始化,密钥与包名 1:1 绑定,相比明文配置文件具有更高的安全性。
生成后点击获取密钥,会出现一个弹窗,点击弹窗中的复制可以将加密密钥复制到剪贴板。
将复制到的密钥保存到您的后台服务,由后台下发给客户端,客户端在 SDK 初始化时使用该密钥即可完成接入。
注意:
加密密钥与 Package name/Bundle ID 1:1 绑定,不同包名对应不同密钥,互不通用。
该方式需要 SDK 版本 ≥ 2.3.8,低版本 SDK 请改用「方式二:下载配置文件」。
请勿将密钥硬编码在客户端代码或公共仓库中,建议由您的业务后台保管,并在客户端运行时按需下发。
仅「应用管理员/应用高级开发者」拥有「生成密钥」权限;「应用开发者」可查看与复制已有密钥;其他角色仅可只读查看是否已生成。
如怀疑密钥泄露,请联系应用管理员处理(如重新生成或更换包名),并同步更新业务后台所保管的密钥。
引入配置
在 AppDelegate.m 下引入 SDK 头文件:
#import <TCMPPSDK/TCMPPSDK.h>
从后台得到加密密钥来获取配置信息:
[self fetchAppSecretFromBackend:^(NSString *appSecret) {
BOOL success = [[TMFMiniAppSDKManager sharedInstance] setConfigurationWithAppSecret:appSecret];
if (!success) {
NSLog(@"SDK 初始化失败");
}
}];
方式二:使用配置文件
下载配置文件:
注意:
默认下载的配置文件的名称为:tcsas-ios-configurations.json
添加配置文件到项目
获取配置文件后,需要将配置文件添加到 superapp 源码工程中:
注意:
iOS 工程的 bundleId 必须与控制台中配置的 bundleId 保持一致,否则会导致 SDK 初始化异常。
引入头文件
把 头文件 引入到 AppDelegate 中。
#import <TCMPPSDK/TCMPPSDK.h>
配置信息设置
根据配置文件初始化 TMAServerConfig 对象,并使用 TMAServerConfig 初始化小程序引擎。
SDK 可以支持直接进行引擎初始化,提前准备网络链接,并更新基础库信息和配置信息,加速后小程序加载,也可以支持在需要的时候进行初始化。
参考代码:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tcsas-ios-configurations" ofType:@"json"];
if(filePath) {
TMAServerConfig *config = [[TMAServerConfig alloc] initWithFile:filePath];
[[TMFMiniAppSDKManager sharedInstance] setConfiguration:config];
}
增加权限设置
如果您只集成了 SDK 的核心库,即 TCMPPSDK,需要在 info.plist 文件中添加权限申请信息。
其中核心 SDK(TCMPPSDK) 涉及的权限:
|
相册写入 | NSPhotoLibraryAddUsageDescription | saveImageToPhotosAlbum、saveVideoToPhotosAlbum |
相机 | NSCameraUsageDescription | CameraContext(Camera 组件) |
麦克风 | NSMicrophoneUsageDescription | CameraContext(Camera 组件) |
如果您需要使用扩展 SDK,那么就要在项目的 info.plist 文件中添加对应的权限申请信息。
设置设备支持横屏
SDK 中的 loading 页面,video 组件等都支持横屏效果,但前提是 superapp 工程支持横屏。
请在 Xcode 设置中勾选以下选项:
注意:
如果不勾选横屏,那么 SDK 中涉及到横屏的功能就没有效果。
其它初始化动作
使用者可根据需要,设置开放接口实现实例。如果需要集成扩展模块时,初始化扩展接口准备。
[TMFMiniAppSDKManager sharedInstance].miniAppSdkDelegate = [MIniAppDemoSDKDelegateImpl sharedInstance];
MIniAppDemoSDKDelegateImpl 必须实现 TMFMiniAppSDKDelegate 协议,可以参考 介绍 和 Demo 工程中的 MIniAppDemoSDKDelegateImpl 文件。 打开小程序
可以通过 AppId 直接调用 API 打开小程序。
[[TMFMiniAppSDKManager sharedInstance] startUpMiniAppWithAppID:appId parentVC:self completion:^(NSError * _Nullable error) {
NSLog(@"open applet error:%@",error);
}];