接入SDK前, 请先阅读接入准备
新用户:
老用户:
pod repo add AliBCSpecs http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git' pod 'AlibcTradeSDK'
如图,留意大小写
从老的onesdk或者电商sdk3.0升级上来的用户,都需要重新申请安全图片.. 否则会导致网络不通
URL Scheme为tbopen{AppKey}
,如tbopen123456
是AppKey, 不是AppID哟!
在 AppDelegate 中初始化SDK
import <AlibcTradeSDK/AlibcTradeSDK.h> - (BOOL)application:(UIApplication *)application { // 百川平台基础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:NO]; return YES; }
为了正常使用百川内置的应用跳转处理,需要调用百川SDK的方法。建议优先调用百川处理,如果百川已处理,可以直接返回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; }
同时实现iOS9+的新系统API
- (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; }
初始化百川电商相关组件,该方法异步执行,使用百川电商相关功能前,必须调用初始化。
/** * 百川电商SDK初始化【异步】 */ - (void)asyncInitWithSuccess:(void (^)())onSuccess failure:(void (^)(NSError *error))onFailure;
/** * 是否走强制H5的逻辑。NO:按照默认规则策略打开页面;YES:全部页面均为H5打开; * 注意:初始化完成后调用才能生效 * * @param isforceH5 (默认为NO) */ - (void) setIsForceH5(BOOL isforceH5)
/** * 设置是否使用同步淘客打点。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的版本 ,通常为三方app版本,可以不进行设置;默认1.0.0 * 注意:初始化完成后调用才能生效 * * @param isvVersion */ - (void)setISVVersion(NSString* isvVersion)
SDK从3.0.0版本以后,使用百川电商组件提供的AlibcTradeService可以方便的打开交易环节中的各种页面。使用百川SDK的webview打开page,可以实现淘宝账号免登以及电商交易支付流程
/** * 使用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 * __nullable result))onSuccess tradeProcessFailedCallback:(nullable void (^)(NSError * __nullable error))onFailure;
拉起手淘
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参数用于指定需要打开的页面,可以使用的页面类型如下表,由AlibcTradePageFactory生成:
//打开商品详情页 id<AlibcTradePage> page = [AlibcTradePageFactory itemDetailPage: @”123456”]; //根据链接打开页面 id<AlibcTradePage> page = [AlibcTradePageFactory page: @"http://h5.m.taobao.com/cm/snap/index.html?id=527140984722"]; //打开店铺 id<AlibcTradePage> page = [AlibcTradePageFactory shopPage: @”12333333”]; //淘客信息 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];
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]; }
读取身份图片AppKey失败, 请确认图片与BundleID