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)建應(yī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左右. 安全相關(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)入工程

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

4赡若、把下載的yw_1222.png圖片文件添加到工程中,缺少該文件會導(dǎo)致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

    // 百川平臺基礎(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

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

到這里大功告成钓瞭!
希望能幫到你!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腌逢,一起剝皮案震驚了整個濱河市降淮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搏讶,老刑警劉巖佳鳖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異媒惕,居然都是意外死亡系吩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門妒蔚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穿挨,“玉大人,你說我怎么就攤上這事肴盏】剖ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵菜皂,是天一觀的道長贞绵。 經(jīng)常有香客問我,道長恍飘,這世上最難降的妖魔是什么榨崩? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮章母,結(jié)果婚禮上母蛛,老公的妹妹穿的比我還像新娘。我一直安慰自己乳怎,他們只是感情好彩郊,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚪缀,像睡著了一般焦辅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椿胯,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天筷登,我揣著相機與錄音,去河邊找鬼哩盲。 笑死前方,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的廉油。 我是一名探鬼主播惠险,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抒线!你這毒婦竟也來了班巩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嘶炭,失蹤者是張志新(化名)和其女友劉穎抱慌,沒想到半個月后逊桦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡抑进,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年强经,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寺渗。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡匿情,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出信殊,到底是詐尸還是另有隱情炬称,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布涡拘,位于F島的核電站玲躯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲸伴。R本人自食惡果不足惜府蔗,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汞窗。 院中可真熱鬧姓赤,春花似錦、人聲如沸仲吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裹唆。三九已至誓斥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間许帐,已是汗流浹背劳坑。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留成畦,地道東北人距芬。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像循帐,于是被迫代替她去往敵國和親框仔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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