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

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

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

新用户:

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

老用户:

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

1. 集成SDK

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

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

方式二: 非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

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;当然,也可以继续处理,比如记录应用跳转来源日志等。
以下代码不现实,会导致通过手淘授权登陆,跳回来没反应等问题

- (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相关接口

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

/**
 * 百川电商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 * __nullable result))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 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打开商品详情页


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

商品展示

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

返回
顶部