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

最近在接入阿里百川電商sdk,簡直是可以用一把眼淚一把鼻涕來形容這個過程,文檔很坑。所以,今天我把我接入阿里百川電商sdk的經驗和坑寫出來,希望對你們有所幫助。

一、注冊阿里巴巴無線平臺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、創建應用

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

二、前期的準備工作做完了,現在才是重點(ios 端的接入)
1、下載最新的sdk:http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.LM0ydN&treeId=129&articleId=106383&docType=1

2、iOS百川組件說明(根據自己的項目需求可以自定義的接入,注:必選的就一定要接入)

打包體積說明
目前我們給的壓縮包,是包含全部功能的.使用方可以根據需要裁剪.
必選組件+ 人機識別,打包后實際增加的體積在2m左右. 安全相關的三個包體積占比較大,一半左右.體積上暫時沒有改善的空間.

基礎安全組件(必選)
安全黑匣子(無線保鏢),加密&解密,安全簽名,風控相關內容;
SGMain.framework (752K)
SecurityGuardSDK.framework (80K)

ut(必選)
組件可用性統計
UTMini.framework (352K)
UTDID.framework (65K)

登陸授權(必選)
AlibabaAuthExt.framework (25K)
AlibabaAuthSDK.framework (247K)
AlibabaAuthSDK.bundle

基礎電商組件(必選)
包含打開detail,淘客分潤,jsbridge注入等功能.
AlibcTradeSDK.framework (342K)
NBResource.bundle

mtop(必選)
Mtop,網關(穩定的高性能無線RPC網關,網關本身包含了一套安全體系,包括加密傳輸、防攻擊、防刷、防篡改、過載保護等安全策略,同時針對無線網絡的特點,在連通性、網絡加速、流量方面進行了針對性優化
OpenMtopExt.framework (76K)
OpenMtopSDK.framework (92K)

登陸綁定(可選)
賬號綁定免登功能擴展包,僅限于優酷、微博等合作方;使用前請先和@御道確認是否開通賬號綁定免登功能
AlibabaAuthBind.framework

alipay:(可選)
支付寶SDK,手機支付寶支付接口開發包主要用來向第三方應用程序提供便捷、安全以及可靠的支付服務。需要使用支付寶極簡支付的isv需要該組件,否則會降級到h5支付,功能不會有影響,但是用戶體驗會降低
AlipaySDK.bundle
AlipaySDK.framework (163K)

applink(可選)
applink,打通“手機淘寶”與三方app的橋梁,實現手機淘寶與三方app之間的往返跳轉,包括登陸時跳手淘授權,用手淘打開商品頁,店鋪等
不包含該組件,上述功能會降級到h5使用.功能無影響,但是用戶體驗會降低.
該包體檢較小,非必要情況不要裁剪.
TBAppLinkSDK.framework (40K)

人機識別–安全(可選)
安全人機功能,用于紅包,優惠券站外發放防刷、鏈路安全。接入優惠券/紅包的業務方需要選擇該組件。
(紅包目前還沒專門的組件,會通過h5方式給出發放通道.h5通道依賴人機識別)
SGSecurityBody.framework (161K)

優惠券(可選)
在第三方內容平臺內,用戶對透出的淘寶/天貓優惠券可通過一鍵點擊將其加入淘寶/天貓卡券。
AlibcTradeContainer.framework (31K)
AlibcCouponComponent.framework (11K)

一鍵加購(可選)
在第三方內容平臺內,用戶對透出的淘寶/天貓商品可通過一鍵點擊將其加入淘寶/天貓購物車。
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初始化,加載并初始化各個業務能力插件
    [[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{

    } failure:^(NSError *error) {
        NSLog(@"Init failed: %@", error.description);
    }];

    // 開發階段打開日志開關,方便排查錯誤信息
    //默認調試模式打開日志,release關閉,可以不調用下面的函數
    [[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];

    // 配置全局的淘客參數
    //如果沒有阿里媽媽的淘客賬號,setTaokeParams函數需要調用
    AlibcTradeTaokeParams *taokeParams = [[AlibcTradeTaokeParams alloc] init];
    taokeParams.pid = @"mm_XXXXX"; //mm_XXXXX為你自己申請的阿里媽媽淘客pid,一定得填寫,不然無法初始化
    [[AlibcTradeSDK sharedInstance] setTaokeParams:taokeParams];

    //設置全局的app標識,在電商模塊里等同于isv_code
    //沒有申請過isv_code的接入方,默認不需要調用該函數
//    [[AlibcTradeSDK sharedInstance] setISVCode:@"your_isv_code"];

    // 設置全局配置,是否強制使用h5
    [[AlibcTradeSDK sharedInstance] setIsForceH5:YES];

}

在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {}實現如下代碼:

/* 老接口寫法 已棄用,建議使用新接口
 if (![[AlibcTradeSDK sharedInstance] handleOpenURL:url]) {
 // 處理其他app跳轉到自己的app
 }
 return YES;
 */

 //新接口寫法
    if (![[AlibcTradeSDK sharedInstance] application:application
                                             openURL:url
                                             options:options]) {
        //處理其他app跳轉到自己的app,如果百川處理過會返回YES
    }

return YES;
}

在- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString )sourceApplication annotation:(id)annotation{}方法實現如下代碼:
/
老接口寫法 已棄用,建議使用新接口
if (![[AlibcTradeSDK sharedInstance] handleOpenURL:url]) {
// 處理其他app跳轉到自己的app
}
return YES;
*/

// 新接口寫法
if (![[AlibcTradeSDK sharedInstance] application:application
                                         openURL:url
                               sourceApplication:sourceApplication
                                      annotation:annotation]) {
    // 處理其他app跳轉到自己的app
}
return YES;

}

設置接口說明
初始化SDK相關接口

初始化百川電商相關組件,該方法異步執行,使用百川電商相關功能前,必須調用初始化。
/**

  • 百川電商SDK初始化【異步】
    */
  • (void)asyncInitWithSuccess:(void (^)())onSuccess failure:(void (^)(NSError *error))onFailure;

設置SDK API調用默認方式
/**

  • 是否走強制H5的邏輯。NO:按照默認規則策略打開頁面;YES:全部頁面均為H5打開;
  • 注意:初始化完成后調用才能生效
  • @param isforceH5 (默認為NO)
    */
  • (void) setIsForceH5(BOOL isforceH5)

設置SDK 淘客打點策略
/**

  • 設置是否使用同步淘客打點。YES:使用淘客同步打點;NO:關閉同步打點,使用異步打點;
  • 注意:初始化完成后調用才能生效;一般不需要特別設置,保持默認值即可
  • @param isSyncForTaoke(默認為YES)
    */
  • (void)setSyncForTaoke(BOOL isSyncForTaoke)

設置淘客全局參數

/**

  • 設置全局淘客參數,方便開發者用同一個淘客參數,不需要在show接口重復傳入
  • 注意:初始化完成后調用才能生效
  • @param taokeParams 淘客參數
    */
  • (void)setTaokeParams(AliTradeTaokeParams taokeParams)

設置渠道信息
/**

  • 設置渠道信息(如果有渠道專享價,需要設置)
  • 注意:初始化完成后調用才能生效
  • @param typeName : 渠道類型(默認為:0)
  • @param channelName : 渠道名稱(默認為:null)
    */
  • (void)setChannel(NSString* typeName, NSString* channelName)

設置isv 版本
/**

  • 設置isv的版本 ,通常為三方app版本,可以不進行設置;默認1.0.0
  • 注意:初始化完成后調用才能生效
  • @param isvVersion
    */
  • (void)setISVVersion(NSString* isvVersion)

調用說明
SDK從3.0.0版本以后,使用百川電商組件提供的AlibcTradeService可以方便的打開交易環節中的各種頁面。使用百川SDK的webview打開page,可以實現淘寶賬號免登以及電商交易支付流程
show接口
/**

  • 使用isv自己的webview打開page,可以實現淘寶賬號免登以及電商交易支付流程
  • @param parentController webView所在的view controller.
  • @param webView isv自己的webview,請先設置好自己的delegate先調用本接口,否則攔截登陸等邏輯會失效
  • @param page 想要打開的page
  • @param showParams 打開方式的一些自定義參數
  • @param taoKeParams 淘客參數
  • @param trackParam 鏈路跟蹤參數
  • @param tradeProcessSuccessCallback 交易流程中成功回調(加購成功/發生支付)
  • @param tradeProcessFailedCallback 交易流程中退出或者調用發生錯誤的回調
  • @return 0: 標識跳轉到手淘打開了
    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 參數
拉起手淘
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參數
其中page參數用于指定需要打開的頁面,可以使用的頁面類型如下表,由AlibcTradePageFactory生成:

//打開商品詳情頁
id<AlibcTradePage> page = [AlibcTradePageFactory itemDetailPage: @”
123456”];

//添加商品到購物車
id<AlibcTradePage> page = [AlibcTradePageFactory addCartPage: @"123456"];
//根據鏈接打開頁面
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的時候,否則函數調用的時候還是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];
}

到這里基本上可以了,但是你真機發現會報錯,原因就是你少設置了一步,光訪問當沒有告訴:把Enable Bitcode設置為NO

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容