最近在接入阿里百川電商sdk痕慢,簡直是可以用一把眼淚一把鼻涕來形容這個過程念搬,文檔很坑抑堡。所以,今天我把我接入阿里百川電商sdk的經(jīng)驗和坑寫出來朗徊,希望對你們有所幫助首妖。
一、注冊阿里巴巴無線平臺http://baichuan.taobao.com/?spm=a3c0d.7662649.0.0.4Fp7OJ
1爷恳、注冊完成以后有缆,點擊電商sdk
2、點擊立即使用
3温亲、創(chuàng)建應(yī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左右. 安全相關(guān)的三個包體積占比較大,一半左右.體積上暫時沒有改善的空間.
基礎(chǔ)安全組件(必選)
安全黑匣子(無線保鏢)逆害,加密&解密头镊,安全簽名,風(fēng)控相關(guān)內(nèi)容魄幕;
SGMain.framework (752K)
SecurityGuardSDK.framework (80K)
ut(必選)
組件可用性統(tǒng)計
UTMini.framework (352K)
UTDID.framework (65K)
登陸授權(quán)(必選)
AlibabaAuthExt.framework (25K)
AlibabaAuthSDK.framework (247K)
AlibabaAuthSDK.bundle
基礎(chǔ)電商組件(必選)
包含打開detail,淘客分潤,jsbridge注入等功能.
AlibcTradeSDK.framework (342K)
NBResource.bundle
mtop(必選)
Mtop相艇,網(wǎng)關(guān)(穩(wěn)定的高性能無線RPC網(wǎng)關(guān),網(wǎng)關(guān)本身包含了一套安全體系纯陨,包括加密傳輸坛芽、防攻擊留储、防刷、防篡改咙轩、過載保護等安全策略获讳,同時針對無線網(wǎng)絡(luò)的特點,在連通性活喊、網(wǎng)絡(luò)加速丐膝、流量方面進行了針對性優(yōu)化
OpenMtopExt.framework (76K)
OpenMtopSDK.framework (92K)
登陸綁定(可選)
賬號綁定免登功能擴展包,僅限于優(yōu)酷钾菊、微博等合作方帅矗;使用前請先和@御道確認是否開通賬號綁定免登功能
AlibabaAuthBind.framework
alipay:(可選)
支付寶SDK,手機支付寶支付接口開發(fā)包主要用來向第三方應(yīng)用程序提供便捷煞烫、安全以及可靠的支付服務(wù)。需要使用支付寶極簡支付的isv需要該組件,否則會降級到h5支付,功能不會有影響,但是用戶體驗會降低
AlipaySDK.bundle
AlipaySDK.framework (163K)
applink(可選)
applink滞详,打通“手機淘寶”與三方app的橋梁凛俱,實現(xiàn)手機淘寶與三方app之間的往返跳轉(zhuǎn),包括登陸時跳手淘授權(quán),用手淘打開商品頁,店鋪等
不包含該組件,上述功能會降級到h5使用.功能無影響,但是用戶體驗會降低.
該包體檢較小,非必要情況不要裁剪.
TBAppLinkSDK.framework (40K)
人機識別–安全(可選)
安全人機功能,用于紅包料饥,優(yōu)惠券站外發(fā)放防刷最冰、鏈路安全。接入優(yōu)惠券/紅包的業(yè)務(wù)方需要選擇該組件稀火。
(紅包目前還沒專門的組件,會通過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導(dǎo)入工程
4赡若、把下載的yw_1222.png圖片文件添加到工程中,缺少該文件會導(dǎo)致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
// 百川平臺基礎(chǔ)SDK初始化炕柔,加載并初始化各個業(yè)務(wù)能力插件
[[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{
} failure:^(NSError *error) {
NSLog(@"Init failed: %@", error.description);
}];
// 開發(fā)階段打開日志開關(guān),方便排查錯誤信息
//默認調(diào)試模式打開日志,release關(guān)閉,可以不調(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];
//設(shè)置全局的app標識,在電商模塊里等同于isv_code
//沒有申請過isv_code的接入方,默認不需要調(diào)用該函數(shù)
// [[AlibcTradeSDK sharedInstance] setISVCode:@"your_isv_code"];
// 設(shè)置全局配置默伍,是否強制使用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;
}
設(shè)置接口說明
初始化SDK相關(guān)接口
初始化百川電商相關(guān)組件际插,該方法異步執(zhí)行,使用百川電商相關(guān)功能前显设,必須調(diào)用初始化框弛。
/**
- 百川電商SDK初始化【異步】
*/
- (void)asyncInitWithSuccess:(void (^)())onSuccess failure:(void (^)(NSError *error))onFailure;
設(shè)置SDK API調(diào)用默認方式
/**
- 是否走強制H5的邏輯。NO:按照默認規(guī)則策略打開頁面捕捂;YES:全部頁面均為H5打開;
- 注意:初始化完成后調(diào)用才能生效
- @param isforceH5 (默認為NO)
*/
- (void) setIsForceH5(BOOL isforceH5)
設(shè)置SDK 淘客打點策略
/**
- 設(shè)置是否使用同步淘客打點瑟枫。YES:使用淘客同步打點;NO:關(guān)閉同步打點指攒,使用異步打點慷妙;
- 注意:初始化完成后調(diào)用才能生效;一般不需要特別設(shè)置,保持默認值即可
- @param isSyncForTaoke(默認為YES)
*/
- (void)setSyncForTaoke(BOOL isSyncForTaoke)
設(shè)置淘客全局參數(shù)
/**
- 設(shè)置全局淘客參數(shù)允悦,方便開發(fā)者用同一個淘客參數(shù)膝擂,不需要在show接口重復(fù)傳入
- 注意:初始化完成后調(diào)用才能生效
- @param taokeParams 淘客參數(shù)
*/
- (void)setTaokeParams(AliTradeTaokeParams taokeParams)
設(shè)置渠道信息
/**
- 設(shè)置渠道信息(如果有渠道專享價,需要設(shè)置)
- 注意:初始化完成后調(diào)用才能生效
- @param typeName : 渠道類型(默認為:0)
- @param channelName : 渠道名稱(默認為:null)
*/
- (void)setChannel(NSString* typeName, NSString* channelName)
設(shè)置isv 版本
/**
- 設(shè)置isv的版本 隙弛,通常為三方app版本架馋,可以不進行設(shè)置;默認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,請先設(shè)置好自己的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設(shè)置不能放在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打開,否則不應(yīng)該展示頁面
if(ret ==1) {
[self.navigationController pushViewController:view animated:YES];
}
到這里基本上可以了屏鳍,但是你真機發(fā)現(xiàn)會報錯,原因就是你少設(shè)置了一步局服,光訪問當沒有告訴:把Enable Bitcode設(shè)置為NO
到這里大功告成钓瞭!
希望能幫到你!