ios 接入阿里百川電商sdk的經(jīng)驗和坑(一把眼淚一把鼻涕的完成)

最近在接入阿里百川電商sdk嗡害,簡直是可以用一把眼淚一把鼻涕來形容這個過程琢歇,文檔很坑兰怠。所以,今天我把我接入阿里百川電商sdk的經(jīng)驗和坑寫出來李茫,希望對你們有所幫助揭保。

一、注冊阿里巴巴無線平臺http://baichuan.taobao.com/?spm=a3c0d.7662649.0.0.4Fp7OJ
1魄宏、注冊完成以后掖举,點擊電商sdk

65703B28-6A67-4A0D-A06D-D559640C2D60.png

2、點擊立即使用

6DB1B343-F8BF-4E1D-8265-AABC85E86C2C.png

3娜庇、創(chuàng)建應用

4B9747F0-D25E-4BA8-9524-787D1B6C2D2D.png

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導入工程

CAE01DB9-37DE-47C1-B4D6-02E0CFA920B9.png

4、把下載的yw_1222.png圖片文件添加到工程中,缺少該文件會導致AlibcTradeSDK初始化失敻Ш恪(注意:圖片不要改名字咱台;注意:圖片不要改名字;注意:圖片不要改名字俭驮;)

B1103BAE-8330-40E6-BD42-916E5090746C.png

5回溺、添加依賴庫(缺一不可)
還要添加:CoreMotion.framework

LB1EMx2KFXXXXczXpXXXXXXXXXX-2.png

6、添加 -lstdc++ -ObjC (一定要添加混萝,不添加初始化會失敗遗遵,一定要注意大小寫)

CDC743F4-0A31-4042-91E1-4602E9D10358.png

7、配置URL Types
URL Scheme為tbopen{AppKey},如tbopen123456
是AppKey, 不是AppID喲逸嘀!

423E4521-14EC-4B40-9409-804D150F4B87.png

8车要、在info.plist中,增加LSApplicationQueriesSchemes字段,并添加tbopen,tmall

3C0C88C2-EE80-4E2D-9151-9855C5DAEB61.png

9、配置ATS, 允許HTTP請求

TB1jeddNXXXXXbpXXXXXXXXXXXX-607-412.png

三崭倘、初始化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

B9B6BF6D-1341-49F3-B78E-20EE85B2744D.png

到這里大功告成潘鲫!
希望能幫到你翁逞!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔬充,一起剝皮案震驚了整個濱河市鸣峭,隨后出現(xiàn)的幾起案子劲腿,更是在濱河造成了極大的恐慌稿辙,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暴氏,死亡現(xiàn)場離奇詭異厅贪,居然都是意外死亡山涡,警方通過查閱死者的電腦和手機振定,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門必怜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人后频,你說我怎么就攤上這事梳庆∨荆” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵膏执,是天一觀的道長驻售。 經(jīng)常有香客問我,道長更米,這世上最難降的妖魔是什么欺栗? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮征峦,結(jié)果婚禮上迟几,老公的妹妹穿的比我還像新娘。我一直安慰自己眶痰,他們只是感情好瘤旨,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布梯啤。 她就那樣靜靜地躺著竖伯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪因宇。 梳的紋絲不亂的頭發(fā)上七婴,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音察滑,去河邊找鬼打厘。 笑死,一個胖子當著我的面吹牛贺辰,可吹牛的內(nèi)容都是我干的户盯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼饲化,長吁一口氣:“原來是場噩夢啊……” “哼莽鸭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吃靠,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤硫眨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后巢块,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礁阁,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年族奢,在試婚紗的時候發(fā)現(xiàn)自己被綠了姥闭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡越走,死狀恐怖棚品,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤南片,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布掺涛,位于F島的核電站,受9級特大地震影響疼进,放射性物質(zhì)發(fā)生泄漏薪缆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一伞广、第九天 我趴在偏房一處隱蔽的房頂上張望拣帽。 院中可真熱鬧,春花似錦嚼锄、人聲如沸减拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拧粪。三九已至,卻和暖如春沧侥,著一層夾襖步出監(jiān)牢的瞬間可霎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工宴杀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留癣朗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓旺罢,卻偏偏與公主長得像旷余,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扁达,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容