百川电商SDK3.1接入文档-iOS

更新时间:2019/01/24 访问次数:54641

接入SDK前, 请先阅读接入准备

新用户:

  1. 需要从官网获取安全图片yw_1222.jpg

老用户:

  1. 需要从官网 重新 获取安全图片yw_1222.jpg, 安全图片已经升级

1. 集成SDK

方式一: Cocoapod方式引入百川SDK

  • 请先添加百川的源
1
pod repo add AliBCSpecs http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git
  • 然后在你工程的Podfile添加(具体版本以百川开发者网站为准)

方式二: 非Cocoapod方式引入百川SDK

添加系统库和资源文件

screenshot

添加系统库

  • libz.tbd
  • libc++.tbd
  • Security.framework
  • CFNetwork.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework

添加编译参数

  • -lstdc++
  • -ObjC

如图,留意大小写

screenshot

添加资源文件

  • 把下载的yw_1222.png图片文件添加到工程中,缺少该文件会导致AlibcTradeSDK初始化失败

从老的onesdk或者电商sdk3.0升级上来的用户,都需要重新申请安全图片.. 否则会导致网络不通

  • 把NBResource.bundle添加到工程中

2. 配置URL Types

URL Scheme为tbopen{AppKey},如tbopen123456

是AppKey, 不是AppID哟!

screenshot

3. 配置

  1. 在info.plist中,增加LSApplicationQueriesSchemes字段,并添加tbopen,tmall

screenshot

  1. 配置ATS, 允许HTTP请求

4. 初始化SDK

在 AppDelegate 中初始化SDK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;
}

5. 处理应用跳转

为了正常使用百川内置的应用跳转处理,需要调用百川SDK的方法。建议优先调用百川处理,如果百川已处理,可以直接返回YES;当然,也可以继续处理,比如记录应用跳转来源日志等。
以下代码不现实,会导致通过手淘授权登陆,跳回来没反应等问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (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相关接口

初始化百川电商相关组件,该方法异步执行,使用百川电商相关功能前,必须调用初始化。

1
2
3
4
/**
 * 百川电商SDK初始化【异步】
 */
- (void)asyncInitWithSuccess:(void (^)())onSuccess failure:(void (^)(NSError *error))onFailure;
  • 设置SDK API调用默认方式
1
2
3
4
5
6
7
/**
 * 是否走强制H5的逻辑。NO:按照默认规则策略打开页面;YES:全部页面均为H5打开;
 * 注意:初始化完成后调用才能生效
 *
 * @param isforceH5 (默认为NO)
 */
- (void) setIsForceH5(BOOL isforceH5)
  • 设置SDK 淘客打点策略
1
2
3
4
5
6
7
/**
 * 设置是否使用同步淘客打点。YES:使用淘客同步打点;NO:关闭同步打点,使用异步打点;
 * 注意:初始化完成后调用才能生效;一般不需要特别设置,保持默认值即可
 *
 * @param isSyncForTaoke(默认为YES)
 */
- (void)setSyncForTaoke(BOOL isSyncForTaoke)
  • 设置淘客全局参数
1
2
3
4
5
6
7
/**
 * 设置全局淘客参数,方便开发者用同一个淘客参数,不需要在show接口重复传入
 * 注意:初始化完成后调用才能生效
 *
 * @param taokeParams 淘客参数
 */
- (void)setTaokeParams(AliTradeTaokeParams taokeParams)
  • 设置渠道信息
1
2
3
4
5
6
7
8
/**
 * 设置渠道信息(如果有渠道专享价,需要设置)
 * 注意:初始化完成后调用才能生效
 *
 * @param typeName    : 渠道类型(默认为:0)
 * @param channelName : 渠道名称(默认为:null)
 */
- (void)setChannel(NSString* typeName, NSString* channelName)
  • 设置isv 版本
1
2
3
4
5
6
7
/**
 * 设置isv的版本 ,通常为三方app版本,可以不进行设置;默认1.0.0
 * 注意:初始化完成后调用才能生效
 *
 * @param isvVersion
 */
- (void)setISVVersion(NSString* isvVersion)

调用说明

SDK从3.0.0版本以后,使用百川电商组件提供的AlibcTradeService可以方便的打开交易环节中的各种页面。使用百川SDK的webview打开page,可以实现淘宝账号免登以及电商交易支付流程

  • show接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<br>/**
 * 使用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;
  • showParams 参数

拉起手淘

1
2
3
4
AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeNative;
showParam.backUrl=@"tbopenXXXXX://";
showParam.isNeedPush=isNeedPush;

拉起天猫

1
2
3
4
5
AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
showParam.openType = AlibcOpenTypeNative;
showParam.backUrl=@"tbopenXXXXX://";
showParam.isNeedPush=isNeedPush;
showParam.linkKey = @"tmall_scheme";//拉起天猫
  • page参数

其中page参数用于指定需要打开的页面,可以使用的页面类型如下表,由AlibcTradePageFactory生成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//打开商品详情页
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];

使用自己的webview打开商品详情页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<br>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];
 }

FAQ

读取身份图片AppKey失败, 请确认图片与BundleID

一直报加载身份图片失败, 请拷贝图片 (null) 至应用M

商品展示

从官网下载的安全图不能使用

返回
顶部