阿里百川电商 SDK iOS 接入教程 (Swift + XCode 12.4)¶
备注
网上有很多 iOS 接入阿里百川 的文档 & 资料(官方也有接入流程的文档 0 ), 但是他们大多数使用的是 Object-C 语言, 针对的 XCode 版本也比较老。 本教程使用 Swift 语言, XCode 最新版(12.4)。
申请 百川电商 SDK 权限¶
前往 阿里百川 开发者控制台 1 申请 百川电商 SDK 的权限。
提示
如果您还没有应用,可以创建应用之后再申请相应的权限。
获取安全图¶
前往 阿里百川 开发者控制台 1 获取 v5 版本的安全图。
备注
当前 阿里百川 在改版,尚未测试 v6 版本的安全图是否可以正常初始化。
集成 阿里百川 SDK¶
推荐使用 CocoaPod 方式接入[免去自己需要下载依赖的麻烦].
修改 Podfile 配置¶
备注
如果没有 Podfile 可以手工创建。 如果您没有使用过 CocoaPods 可以查阅 CocoaPods 官方 3 的使用文档。
修改 Podfile 文件:
# 版本最低为 13.0
platform :ios, '13.7'
source 'https://github.com/CocoaPods/Specs'
# target 更改为您自己的 target
target 'tbk' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# 阿里百川 Pods
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git'
pod 'AlibcTradeSDK', '4.0.1.6'
pod 'AliAuthSDK', '1.1.0.41-bc'
pod 'mtopSDK', '3.0.0.3-BC'
pod 'securityGuard', '5.4.191'
pod 'AliLinkPartnerSDK', '4.0.0.24'
pod 'BCUserTrack', '5.2.0.18-appkeys'
pod 'UTDID', '1.5.0.91'
pod 'WindVane', '8.5.0.46-bc11'
# 其他的依赖
end
更新 Pod 依赖¶
编辑 & 保存 Podfile 之后,使用 pod update
下载 & 配置依赖。
使用 XCode 加载 xcworkspace 工程¶
如果原先 XCode 打开的是 xcodeproj
工程, 则需要重启 XCode 加载 xcworkspace 工程。
放置 安全图¶
把下载的安全图(yw_1222_baichuan.jpg) 放到 xcodeproj
项目的根目录。
警告
这儿下载的安全图必须是 iOS 版本的安全图。
安全图可以从 阿里百川 开发者控制台 1 下载。
如果安全图名称不一致,请手动修改图片名称(安全图名称必须为: yw_1222_baichuan.jpg)。
配置 URLScheme¶
如图所示:
警告
tbopen 后面的数值应该是您在淘宝开放平台上的 APPKey。 这儿的数值不是固定值。
配置 LSApplicationQueriesSchemes¶
如图所示:
其他配置¶
配置ATS, 允许HTTP请求.
在 Targets -> Build Settings 中设置 Bitcode 为 No
引入头文件¶
在项目的 Bridging-Header 中 引入依赖的 百川SDK 头文件:
#import <AlibcTradeSDK/AlibcTradeSDK.h>
#import <AlibabaAuthEntrance/ALBBSDK.h>
#import <AlibabaAuthEntrance/ALBBCompatibleSession.h>
#import <AlipaySDK/AlipaySDK.h>
AppDelegate 初始化 百川 SDK¶
在 AppDelegate 类中的 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 函数中, 添加初始化函数:
let bc = AlibcTradeSDK.sharedInstance()
bc?.asyncInit(success: {
// 成功
}, failure: { (error) in
// 失败
})
添加如下函数(如果 AppDelegate 中不存在):
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
logger.info("ali bc call back is hit url: \(url)")
if let alibc = AlibcTradeSDK.sharedInstance() {
if (alibc.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)) {
return true
}
}
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
logger.info("url: \(url), options: \(options)");
if let alibc = AlibcTradeSDK.sharedInstance() {
logger.error("run to here");
if (alibc.application(app, open: url, options: nil) == true) {
return true
}
}
return true
}
SceneDelegate 初始化 百川 SDK¶
SceneDelegate 类中添加:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
let instance = AlibcTradeSDK.sharedInstance()!
URLContexts.forEach { context in
if (instance.application(nil, open: context.url, options: nil) == true) {
return
}
}
}
完整的实现可以参考奇遇淘客 iOS 版 2 .