最近在接入阿里百川電商sdk嗡害,簡直是可以用一把眼淚一把鼻涕來形容這個過程琢歇,文檔很坑兰怠。所以,今天我把我接入阿里百川電商sdk的經(jīng)驗和坑寫出來李茫,希望對你們有所幫助揭保。
一、注冊阿里巴巴無線平臺http://baichuan.taobao.com/?spm=a3c0d.7662649.0.0.4Fp7OJ
1魄宏、注冊完成以后掖举,點擊電商sdk
2、點擊立即使用
3娜庇、創(chuàng)建應用
4塔次、做好準備工作,可以參考這里:http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.8115090.0.0&treeId=129&articleId=105645&docType=1
二名秀、前期的準備工作做完了励负,現(xiàn)在才是重點(ios 端的接入)
1、下載最新的sdk:http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.LM0ydN&treeId=129&articleId=106383&docType=1
2匕得、iOS百川組件說明(根據(jù)自己的項目需求可以自定義的接入继榆,注:必選的就一定要接入)
打包體積說明
目前我們給的壓縮包,是包含全部功能的.使用方可以根據(jù)需要裁剪.
必選組件+ 人機識別,打包后實際增加的體積在2m左右. 安全相關的三個包體積占比較大,一半左右.體積上暫時沒有改善的空間.
基礎安全組件(必選)
安全黑匣子(無線保鏢),加密&解密汁掠,安全簽名略吨,風控相關內(nèi)容;
SGMain.framework (752K)
SecurityGuardSDK.framework (80K)
ut(必選)
組件可用性統(tǒng)計
UTMini.framework (352K)
UTDID.framework (65K)
登陸授權(必選)
AlibabaAuthExt.framework (25K)
AlibabaAuthSDK.framework (247K)
AlibabaAuthSDK.bundle
基礎電商組件(必選)
包含打開detail,淘客分潤,jsbridge注入等功能.
AlibcTradeSDK.framework (342K)
NBResource.bundle
mtop(必選)
Mtop考阱,網(wǎng)關(穩(wěn)定的高性能無線RPC網(wǎng)關翠忠,網(wǎng)關本身包含了一套安全體系,包括加密傳輸乞榨、防攻擊秽之、防刷、防篡改吃既、過載保護等安全策略考榨,同時針對無線網(wǎng)絡的特點,在連通性鹦倚、網(wǎng)絡加速河质、流量方面進行了針對性優(yōu)化
OpenMtopExt.framework (76K)
OpenMtopSDK.framework (92K)
登陸綁定(可選)
賬號綁定免登功能擴展包,僅限于優(yōu)酷、微博等合作方掀鹅;使用前請先和@御道確認是否開通賬號綁定免登功能
AlibabaAuthBind.framework
alipay:(可選)
支付寶SDK散休,手機支付寶支付接口開發(fā)包主要用來向第三方應用程序提供便捷、安全以及可靠的支付服務淫半。需要使用支付寶極簡支付的isv需要該組件,否則會降級到h5支付,功能不會有影響,但是用戶體驗會降低
AlipaySDK.bundle
AlipaySDK.framework (163K)
applink(可選)
applink溃槐,打通“手機淘寶”與三方app的橋梁匣砖,實現(xiàn)手機淘寶與三方app之間的往返跳轉(zhuǎn),包括登陸時跳手淘授權,用手淘打開商品頁,店鋪等
不包含該組件,上述功能會降級到h5使用.功能無影響,但是用戶體驗會降低.
該包體檢較小,非必要情況不要裁剪.
TBAppLinkSDK.framework (40K)
人機識別–安全(可選)
安全人機功能科吭,用于紅包,優(yōu)惠券站外發(fā)放防刷猴鲫、鏈路安全对人。接入優(yōu)惠券/紅包的業(yè)務方需要選擇該組件。
(紅包目前還沒專門的組件,會通過h5方式給出發(fā)放通道.h5通道依賴人機識別)
SGSecurityBody.framework (161K)
優(yōu)惠券(可選)
在第三方內(nèi)容平臺內(nèi)拂共,用戶對透出的淘寶/天貓優(yōu)惠券可通過一鍵點擊將其加入淘寶/天貓卡券牺弄。
AlibcTradeContainer.framework (31K)
AlibcCouponComponent.framework (11K)
一鍵加購(可選)
在第三方內(nèi)容平臺內(nèi),用戶對透出的淘寶/天貓商品可通過一鍵點擊將其加入淘寶/天貓購物車宜狐。
AlibcTradeContainer.framework (31K)
AlibcAddCartComponent.framework (9K)
AliBCWant.bundle
AliBCWant.framework (58K)
3势告、把sdk導入工程
4、把下載的yw_1222.png圖片文件添加到工程中,缺少該文件會導致AlibcTradeSDK初始化失敻Ш恪(注意:圖片不要改名字咱台;注意:圖片不要改名字;注意:圖片不要改名字俭驮;)
5回溺、添加依賴庫(缺一不可)
還要添加:CoreMotion.framework
6、添加 -lstdc++ -ObjC (一定要添加混萝,不添加初始化會失敗遗遵,一定要注意大小寫)
7、配置URL Types
URL Scheme為tbopen{AppKey},如tbopen123456
是AppKey, 不是AppID喲逸嘀!
8车要、在info.plist中,增加LSApplicationQueriesSchemes字段,并添加tbopen,tmall
9、配置ATS, 允許HTTP請求
三崭倘、初始化SDK
在 AppDelegate 中初始化SDK
// 百川平臺基礎SDK初始化屯蹦,加載并初始化各個業(yè)務能力插件
[[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{
} failure:^(NSError *error) {
NSLog(@"Init failed: %@", error.description);
}];
// 開發(fā)階段打開日志開關,方便排查錯誤信息
//默認調(diào)試模式打開日志,release關閉,可以不調(diào)用下面的函數(shù)
[[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];
// 配置全局的淘客參數(shù)
//如果沒有阿里媽媽的淘客賬號,setTaokeParams函數(shù)需要調(diào)用
AlibcTradeTaokeParams *taokeParams = [[AlibcTradeTaokeParams alloc] init];
taokeParams.pid = @"mm_XXXXX"; //mm_XXXXX為你自己申請的阿里媽媽淘客pid绳姨,一定得填寫登澜,不然無法初始化
[[AlibcTradeSDK sharedInstance] setTaokeParams:taokeParams];
//設置全局的app標識,在電商模塊里等同于isv_code
//沒有申請過isv_code的接入方,默認不需要調(diào)用該函數(shù)
// [[AlibcTradeSDK sharedInstance] setISVCode:@"your_isv_code"];
// 設置全局配置飘庄,是否強制使用h5
[[AlibcTradeSDK sharedInstance] setIsForceH5:YES];
}
在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {}實現(xiàn)如下代碼:
/* 老接口寫法 已棄用脑蠕,建議使用新接口
if (![[AlibcTradeSDK sharedInstance] handleOpenURL:url]) {
// 處理其他app跳轉(zhuǎn)到自己的app
}
return YES;
*/
//新接口寫法
if (![[AlibcTradeSDK sharedInstance] application:application
openURL:url
options:options]) {
//處理其他app跳轉(zhuǎn)到自己的app,如果百川處理過會返回YES
}
return YES;
}
在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString )sourceApplication annotation:(id)annotation{}方法實現(xiàn)如下代碼:
/ 老接口寫法 已棄用,建議使用新接口
if (![[AlibcTradeSDK sharedInstance] handleOpenURL:url]) {
// 處理其他app跳轉(zhuǎn)到自己的app
}
return YES;
*/
// 新接口寫法
if (![[AlibcTradeSDK sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation]) {
// 處理其他app跳轉(zhuǎn)到自己的app
}
return YES;
}
設置接口說明
初始化SDK相關接口
初始化百川電商相關組件谴仙,該方法異步執(zhí)行迂求,使用百川電商相關功能前,必須調(diào)用初始化晃跺。
/**
- 百川電商SDK初始化【異步】
*/
- (void)asyncInitWithSuccess:(void (^)())onSuccess failure:(void (^)(NSError *error))onFailure;
設置SDK API調(diào)用默認方式
/**
- 是否走強制H5的邏輯揩局。NO:按照默認規(guī)則策略打開頁面;YES:全部頁面均為H5打開;
- 注意:初始化完成后調(diào)用才能生效
- @param isforceH5 (默認為NO)
*/
- (void) setIsForceH5(BOOL isforceH5)
設置SDK 淘客打點策略
/**
- 設置是否使用同步淘客打點掀虎。YES:使用淘客同步打點凌盯;NO:關閉同步打點,使用異步打點烹玉;
- 注意:初始化完成后調(diào)用才能生效驰怎;一般不需要特別設置,保持默認值即可
- @param isSyncForTaoke(默認為YES)
*/
- (void)setSyncForTaoke(BOOL isSyncForTaoke)
設置淘客全局參數(shù)
/**
- 設置全局淘客參數(shù),方便開發(fā)者用同一個淘客參數(shù)二打,不需要在show接口重復傳入
- 注意:初始化完成后調(diào)用才能生效
- @param taokeParams 淘客參數(shù)
*/
- (void)setTaokeParams(AliTradeTaokeParams taokeParams)
設置渠道信息
/**
- 設置渠道信息(如果有渠道專享價县忌,需要設置)
- 注意:初始化完成后調(diào)用才能生效
- @param typeName : 渠道類型(默認為:0)
- @param channelName : 渠道名稱(默認為:null)
*/
- (void)setChannel(NSString* typeName, NSString* channelName)
設置isv 版本
/**
- 設置isv的版本 ,通常為三方app版本继效,可以不進行設置症杏;默認1.0.0
- 注意:初始化完成后調(diào)用才能生效
- @param isvVersion
*/
- (void)setISVVersion(NSString* isvVersion)
調(diào)用說明
SDK從3.0.0版本以后,使用百川電商組件提供的AlibcTradeService可以方便的打開交易環(huán)節(jié)中的各種頁面瑞信。使用百川SDK的webview打開page厉颤,可以實現(xiàn)淘寶賬號免登以及電商交易支付流程
show接口
/**
- 使用isv自己的webview打開page,可以實現(xiàn)淘寶賬號免登以及電商交易支付流程
- @param parentController webView所在的view controller.
- @param webView isv自己的webview,請先設置好自己的delegate先調(diào)用本接口,否則攔截登陸等邏輯會失效
- @param page 想要打開的page
- @param showParams 打開方式的一些自定義參數(shù)
- @param taoKeParams 淘客參數(shù)
- @param trackParam 鏈路跟蹤參數(shù)
- @param tradeProcessSuccessCallback 交易流程中成功回調(diào)(加購成功/發(fā)生支付)
- @param tradeProcessFailedCallback 交易流程中退出或者調(diào)用發(fā)生錯誤的回調(diào)
- @return 0: 標識跳轉(zhuǎn)到手淘打開了
1: 標識用h5打開
-1: 標識出錯
*/
- (NSInteger) show:(UIViewController * __nonnull)parentController webView:(nullable UIWebView)webView page:(id<AlibcTradePage> __nonnull)page showParams:(nullable AlibcTradeShowParams)showParams taoKeParams:(nullable AlibcTradeTaokeParams )taoKeParams trackParam:(nullable NSDictionary)trackParam
tradeProcessSuccessCallback:(nullable void(^)(AlibcTradeResult * __nullableresult))onSuccess tradeProcessFailedCallback:(nullable
void(^)(NSError * __nullable error))onFailure;
showParams 參數(shù)
拉起手淘
AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeNative;
showParam.backUrl=@"tbopenXXXXX://";
showParam.isNeedPush=isNeedPush;
拉起天貓
AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeNative;
showParam.backUrl=@"tbopenXXXXX://";
showParam.isNeedPush=isNeedPush;
showParam.linkKey = @"tmall_scheme";
//拉起天貓
page參數(shù)
其中page參數(shù)用于指定需要打開的頁面,可以使用的頁面類型如下表,由AlibcTradePageFactory生成:
//打開商品詳情頁
id<AlibcTradePage> page = [AlibcTradePageFactory itemDetailPage: @”
123456”];
//添加商品到購物車
id<AlibcTradePage> page = [AlibcTradePageFactory addCartPage: @"123456"];
//根據(jù)鏈接打開頁面
id<AlibcTradePage> page = [AlibcTradePageFactory page: @"http://h5.m.taobao.com/cm/snap/index.html?id=527140984722"
];
//打開店鋪
id<AlibcTradePage> page = [AlibcTradePageFactory shopPage: @”12333333”];
//打開我的訂單頁
id<AlibcTradePage> page = [AlibcTradePageFactory myOrdersPage: 0 isAllOrder:YES];
//打開我的購物車
id<AlibcTradePage> page = [AlibcTradePageFactory myCartsPage];
//淘客信息
AlibcTradeTaokeParams *taoKeParams=[[AlibcTradeTaokeParams alloc] init];
taoKeParams.pid=nil;
//
//打開方式
AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeAuto;
[[AlibcTradeSDK sharedInstance].tradeService show: self.navigationController page:page showParams:showParam taoKeParams: nil trackParam: trackParam tradeProcessSuccessCallback:self.onTradeSuccess tradeProcessFailedCallback:self.onTradeFailure];
使用自己的webview打開商品詳情頁
id<AlibcTradePage> page = [AlibcTradePageFactory itemDetailPage: @”123456”];
//淘客信息
AlibcTradeTaokeParams taoKeParams=[[AlibcTradeTaokeParams alloc] init];
taoKeParams.pid= nil;
//打開方式
AlibcTradeShowParams showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeAuto;
// YourWebViewController類中,webview的delegate設置不能放在viewdidload里面,必須在init的時候,否則函數(shù)調(diào)用的時候還是nil
YourTradeWebViewController* myView = [[YourTradeWebViewController alloc] init];
NSInteger ret = [[AlibcTradeSDK sharedInstance].tradeService show: myView webView: myView.webView page:page showParams:showParam taoKeParams: taoKeParams trackParam:nil tradeProcessSuccessCallback:self.onTradeSuccess tradeProcessFailedCallback:self.onTradeFailure];
//返回1,說明h5打開,否則不應該展示頁面
if(ret ==1) {
[self.navigationController pushViewController:view animated:YES];
}
到這里基本上可以了喧伞,但是你真機發(fā)現(xiàn)會報錯走芋,原因就是你少設置了一步,光訪問當沒有告訴:把Enable Bitcode設置為NO
到這里大功告成潘鲫!
希望能幫到你翁逞!