新用户:
老用户:
注意需要仔细阅读下面工程配置,与原有配置有所区别的地方,环境检查可以先忽略yw_1222.jpg问题。
目前百川只支持直接添加framework的方式进行依赖集成
SDK下载地址:https://baichuan.taobao.com/docs/doc.htm?treeId=129&articleId=106383&docType=1
注:该版本需使用V6版本的安全图片,V6版本的安全图片可在《百川套件平台》 下载
如图,留意大小写
添加到工程中
添加plist 文件: mtopsdk_configuration.plist
内容如下:
**配置URL Types**
URL Scheme为tbopen{AppKey}
,如tbopen123456
是AppKey, 不是AppID哟!
**配置info.plist**
设定Bitcode
在Targets->Build Settings中设置Bitcode为No
在 AppDelegate 中初始化SDK,引入
#import <AlibcTradeSDK/AlibcTradeSDK.h>
// 百川平台基础SDK初始化,加载并初始化各个业务能力插件 [[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];//开发阶段打开日志开关,方便排查错误信息 [[AlibcTradeSDK sharedInstance] setIsvVersion:@"2.2.2"]; [[AlibcTradeSDK sharedInstance] setIsvAppName:@"baichuanDemo"]; [[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{ TLOG_INFO(@"百川SDK初始化成功"); } failure:^(NSError *error) { TLOG_INFO(@"百川SDK初始化失败"); }];
百川会初始化相关的依赖,不要自行初始化百川依赖的相关SDK.
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ // 如果百川处理过会返回YES if (![[AlibcTradeSDK sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]) { // 处理其他app跳转到自己的app } return YES; } //IOS9.0 系统新的处理openURL 的API - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { if (@available(iOS 9.0, *)) { __unused BOOL isHandledByALBBSDK=[[AlibcTradeSDK sharedInstance] application:application openURL:url options:options]; } else { // Fallback on earlier versions }//处理其他app跳转到自己的app,如果百川处理过会返回YES return YES; }
XCode 11 ,iOS 13 适配
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts { [URLContexts enumerateObjectsUsingBlock:^(UIOpenURLContext * _Nonnull obj, BOOL * _Nonnull stop) { if([[AlibcTradeSDK sharedInstance] application:nil openURL:obj.URL options:nil]){ *stop = YES; } }]; }
为了正常使用百川内置的应用跳转处理,需要调用百川SDK的application:openURL:options:方法。建议优先调用百川处理,如果百川已处理,可以直接返回YES;当然,也可以继续处理,比如记录应用跳转来源日志等。
以上代码不实现,会导致通过手淘授权登陆, 依旧没有登录态等问题
if(![[ALBBCompatibleSession sharedInstance] isLogin]) { [[ALBBSDK sharedInstance] setH5Only:NO]; [[ALBBSDK sharedInstance] auth:self successCallback:^{ NSString *tip = [NSString stringWithFormat:@"登录的用户信息:%@",[[ALBBCompatibleSession sharedInstance] getUser]]; NSLog(@"%@", tip); } failureCallback:^(NSError *error) { NSString *tip=[NSString stringWithFormat:@"登录失败:%@",@""]; NSLog(@"%@", tip); }]; } else { NSString *tip = [NSString stringWithFormat:@"登录的用户信息:%@",[[ALBBCompatibleSession sharedInstance] getUser]]; NSLog(@"%@", tip); }
页面打开参数组装
淘客参数组装
(注:1、如果走adzoneId的方式分佣打点,需要在extraParams中显式传入taokeAppkey,否则打点失败;2、如果是打开店铺页面(shop),需要在extraParams中显式传入sellerId,否则同步打点转链失败3、如果adzoneId存在的话 pid参数会失效 4、关于直接打开s.click链接分佣说明
百川SDK不支持s.click(或uland)链接的二次转链逻辑,如果采用openByUrl方式打开该类链接,请勿传入pid等分佣参数;
若需要使用其他渠道获取的s.click链接进行分佣,可自行去淘客联盟后台生成自己的s.click链接或调用联盟服务接口生成。)
链路跟踪参数: trackParam
URL 方式调用电商API
绑定三方自己webview 的情况,需要媒体客户端在自己webview 创建初始化的时机开启WKURLProtocol,[WVURLProtocolService setSupportWKURLProtocol:YES]; 在webview 关闭的时候关闭这个WKURLProtocol, [WVURLProtocolService setSupportWKURLProtocol:NO];
//媒体可以传入自定义webview或者不传 百川SDK默认会创建webview NSInteger res = [[AlibcTradeSDK sharedInstance].tradeService openByUrl:url identity:@"trade"//当前固定传入"trade" 后期会开放业务标识申请 webView:view.webView parentController:view showParams:showParam taoKeParams:[self taokeParam] trackParam:[self customParam] tradeProcessSuccessCallback:self.onTradeSuccess tradeProcessFailedCallback:self.onTradeFailure]; //页面最终以h5方式打开且showParam.isNeedPush = YES //需要媒体自行处理。其余情况媒体不用关心 if (res == 1) { [self.navigationController pushViewController:view animated:YES]; }
code 方式调用API
//媒体可以传入自定义webview或者不传 百川SDK默认会创建webview NSInteger res = [[AlibcTradeSDK sharedInstance].tradeService openByBizCode:bizCode page:page webView:view.webView parentController:view showParams:showParam taoKeParams:[self taokeParam] trackParam:[self customParam] tradeProcessSuccessCallback:self.onTradeSuccess tradeProcessFailedCallback:self.onTradeFailure]; //页面最终以h5方式打开且showParam.isNeedPush = YES //需要媒体自行处理。其余情况媒体不用关心 if (res == 1) { [self.navigationController pushViewController:view animated:YES]; }