百川电商SDK开发文档-Android(5.x版本)

更新时间:2022/08/25 访问次数:51949

1 接入说明

2 基础接口

3 电商接口

4 电商能力协议

5 SDK变更说明

6 详情页推荐&购物车商品

注1: 该版本sdk的安全图片采用yw_1222_baichuan的名称,即yw_1222_baichuan.jpg
注2:5.x版本请务必更新到5.0.0.7及以上版本

旗舰版(5.0.0.32)最新版本更新说明:

百川sdk不再对外提供线上仓库依赖,提供本地包下载地址,由接入侧采用本地依赖或者自有仓库的方式进行sdk依赖,本地依赖方式保持不变,可参见下文相关内容;
5.0.0.32版本的下载链接参见(可手动复制链接下载):
https://baichuan.taobao.com/docs/doc.htm?treeId=129&articleId=106383&docType=1
注:该版本需使用V6版本的安全图片,V6版本的安全图片可在《百川套件平台》 下载

1 接入说明

1.1 步骤一:添加百川依赖(gradle配置)

1.1.1 项目根目录下的build配置文件中添加如下仓库的依赖

allprojects {
     repositories {
       jcenter()
           maven {
                url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
            }
        }
    }

1.1.2 项目module的build配置文件中添加如下SDK的依赖

线上依赖(5.0.0.7及以前)

dependencies { 
     ..... 
     // 登陆 
     implementation 'com.alibaba.baichuan.sdk:alibclogin:5.0.0.7'
     // applink 
     implementation 'com.alibaba.baichuan.sdk:alibcapplink:5.0.0.7' 
     // 广告SDK
     implementation 'com.alibaba.baichuan.sdk:alibcad:5.0.0.7'
     // 小程序
     implementation 'com.alibaba.baichuan.sdk:alibctriver:5.0.0.7'
     // c++基础库(如果工程中没有接入该so包:libc++_shared.so,需要接入该sdk)
     implementation "llvm.stl:cpp_shared:0.0.3@aar"
     // 直播
     implementation 'com.alibaba.baichuan.sdk:alibctriver_live:5.0.0.7'
     // webview容器
     implementation 'com.alibaba.baichuan.sdk:alibcwebview:5.0.0.7'
     // 电商基础组件 
     implementation 'com.alibaba.baichuan.sdk:alibctradecommon:5.0.0.7'
     implementation 'com.alibaba.baichuan.sdk:alibcnbtrade:5.0.0.7'
     implementation 'com.alibaba.baichuan.sdk:alibcprotocol:5.0.0.7'
     implementation 'com.alibaba:fastjson:1.1.71.android'
     ..... 
}

5.0.0.13及以后

dependencies { 
     ..... 
     // 登陆 
     implementation 'com.alibaba.baichuan.sdk:alibclogin:5.0.0.13'
     // applink 
     implementation 'com.alibaba.baichuan.sdk:alibcapplink:5.0.0.13' 
     // 广告SDK
     implementation 'com.alibaba.baichuan.sdk:alibcad:5.0.0.13'
     // 小程序
     implementation 'com.alibaba.baichuan.sdk:alibctriver:5.0.0.13'
     // c++基础库(如果工程中没有接入该so包:libc++_shared.so,需要接入该sdk)
     implementation "llvm.stl:cpp_shared:0.0.3@aar"
     // 直播
     implementation 'com.alibaba.baichuan.sdk:alibctriver_live:5.0.0.13'
     // webview容器
     implementation 'com.alibaba.baichuan.sdk:alibcwebview:5.0.0.13'
     // 电商基础组件 
     implementation 'com.alibaba.baichuan.sdk:alibctradecommon:5.0.0.13'
     implementation 'com.alibaba.baichuan.sdk:alibcnbtrade:5.0.0.13'
     implementation 'com.alibaba.baichuan.sdk:alibcprotocol:5.0.0.13'
     // 辅助排查工具(可选)
     implementation "com.alibaba.baichuan.sdk:alibctools:5.0.0.13"
     // 安全保镖v5版本(根据实际情况,v5和v6版本选择其一)
     implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:avmpaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v5@aar'
     // 安全保镖v6版本
     implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v6@aar'
     implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v6@aar'
     implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v6@aar'
     implementation 'com.alibaba:fastjson:1.1.71.android'
     ..... 
}

更新说明:目前基础安全组件提供新的优化版本(v6),如果需要可自行从该地址下载本地包(包含5个aar包),通过本地依赖的方式替换(v6版本安全保镖需要对应获取v6的安全图片,安全图片获取参见上文)
附:新的优化安全组件版本下载地址(https://baichuan.taobao.com/docs/doc.htm?treeId=129&articleId=106383&docType=1)
新版本依赖方式(name自行命名):

implementation(name:'securityguardaar3', ext:'aar')
implementation(name:'securitybodyaar3', ext:'aar')
implementation(name:'noCaptch', ext:'aar')
implementation(name:'misc', ext:'aar')
implementation(name:'sgmiddletier', ext:'aar')

UC内置版本

dependencies { 
     ..... 
     // 登陆 
     implementation 'com.alibaba.baichuan.sdk:alibclogin:5.0.0.15'
     // applink 
     implementation 'com.alibaba.baichuan.sdk:alibcapplink:5.0.0.15' 
     // 广告SDK
     implementation 'com.alibaba.baichuan.sdk:alibcad:5.0.0.15'
     // 小程序
     implementation 'com.alibaba.baichuan.sdk:alibctriver:5.0.0.15'
     // c++基础库(如果工程中没有接入该so包:libc++_shared.so,需要接入该sdk)
     implementation "llvm.stl:cpp_shared:0.0.3@aar"
     // 直播
     implementation 'com.alibaba.baichuan.sdk:alibctriver_live:5.0.0.15'
     // webview容器
     implementation 'com.alibaba.baichuan.sdk:alibcwebview:5.0.0.15'
     // 电商基础组件 
     implementation 'com.alibaba.baichuan.sdk:alibctradecommon:5.0.0.15'
     implementation 'com.alibaba.baichuan.sdk:alibcnbtrade:5.0.0.15'
     implementation 'com.alibaba.baichuan.sdk:alibcprotocol:5.0.0.15'
     // 辅助排查工具(可选)
     implementation "com.alibaba.baichuan.sdk:alibctools:5.0.0.15"
     // 安全保镖v5版本(根据实际情况,v5和v6版本选择其一)
     implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:avmpaar3:5.0.0.9-v5@aar'
     implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v5@aar'
     // 安全保镖v6版本
     implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v6@aar'
     implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v6@aar'
     implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v6@aar'
     implementation 'com.alibaba:fastjson:1.1.71.android'
     ..... 
}

本地依赖

将各个sdk的aar文件下载放到本地工程的libs目录下,按照如下方式接入:(name以实际的本地aar或jar包的名字为准)

dependencies {
    .....
    implementation(name: 'alibcad-5.0.0.7', ext: 'aar')
    implementation(name: 'alibcapplink-5.0.0.7', ext: 'aar')
    implementation(name: 'alibclogin-5.0.0.7', ext: 'aar')
    implementation(name: 'alibcnbtrade-5.0.0.7', ext: 'aar')
    implementation(name: 'alibcprotocol-5.0.0.7', ext: 'aar')
    implementation(name: 'alibctradecommon-5.0.0.7', ext: 'aar')
    implementation(name: 'alibctriver-5.0.0.7', ext: 'aar')
    implementation(name: 'alibctriver_live-5.0.0.7', ext: 'aar')
    implementation(name: 'alibcwebview-5.0.0.7', ext: 'aar')
    implementation 'com.alibaba:fastjson:1.1.71.android'
    .....
}

1.2 步骤二:百川组件说明

1.2.1 基础组件(必选)

implementation 'com.alibaba.baichuan.sdk:alibctradecommon:5.0.0.x'

1.2.2 登录(必选)

外部三方登录

implementation 'com.alibaba.baichuan.sdk:alibclogin:5.0.0.x'

1.2.3 appLink(必选)

打通“手机淘宝”与三方app的桥梁,实现手机淘宝与三方app之间的往返跳转,包括登陆时跳手淘授权,用手淘打开商品页,店铺等

implementation 'com.alibaba.baichuan.sdk:alibcapplink:5.0.0.x'

1.2.4 广告SDK(必选)

淘客分佣转链

implementation 'com.alibaba.baichuan.sdk:alibcad:5.0.0.x'

1.2.5 小程序SDK(必选)

支持小程序页面在应用内加载

implementation 'com.alibaba.baichuan.sdk:alibctriver:5.0.0.x'
// c++基础库(如果工程中没有接入该so包:libc++_shared.so,需要接入该sdk)
implementation "llvm.stl:cpp_shared:0.0.3@aar"

1.2.6 直播SDK

支持直播间播放

implementation 'com.alibaba.baichuan.sdk:alibctriver_live:5.0.0.x'

1.2.7 webview容器(必选)

支持h5页面加载

implementation 'com.alibaba.baichuan.sdk:alibcwebview:5.0.0.x'

1.2.8 百川SDK(必选)

基础套件页面加载

implementation 'com.alibaba.baichuan.sdk:alibcnbtrade:5.0.0.x'
implementation 'com.alibaba.baichuan.sdk:alibcprotocol:5.0.0.x'

1.2.9 安全保镖(必选)(百川sdk5.0.0.13及之后版本才需要依赖)
安全保镖sdk单独剥离出来以及提供两个版本的背景:
考虑到跟其他二方对外提供的安全保镖版本的冲突问题,不再将安全保镖集成到百川sdk内部,采用编译期依赖的方式,媒体可根据自己
应用依赖sdk的实际情况来选择使用v5或v6版本,其中一个场景就是跟实人认证提供的安全保镖版本冲突的情况。
该安全保镖版本需要跟安全图片版本一致,即v5版本的安全保镖需要使用v5版本的安全图片,v6版本的安全保镖需要使用v6版本的安全图片,具体安全图片请登录套件后台生成,地址参见:https://suite.baichuan.taobao.com/suite2.htm#/index

v5版本

implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v5@aar'
implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v5@aar'
implementation 'com.taobao.android:avmpaar3:5.0.0.9-v5@aar'
implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v5@aar'

v6版本

implementation 'com.taobao.android:securityguardaar3:5.0.0.9-v6@aar'
implementation 'com.taobao.android:securitybodyaar3:5.0.0.9-v6@aar'
implementation 'com.taobao.android:sgmiddletieraar3:5.0.0.9-v6@aar'

1.2.10 辅助排查工具(可选)(5.0.0.13及之后版本才需要依赖)

辅助接入排查一些基础问题,具体使用参见下文

implementation "com.alibaba.baichuan.sdk:alibctools:5.0.0.x"

1.2.10 业务扩展模块(可选)(5.0.0.20及以上版本才需要依赖)

该模块主要包括任务激励、TOP授权逻辑,媒体侧可根据自己业务上是否接入来决定是否需要引入该模块,具体使用参见下文

implementation "com.alibaba.baichuan.sdk:alibcextend:5.0.0.x"

1.3 步骤二:百川SDK具体版本

1、基础必选SDK
2、具备电商套件能力SDK

1.4 步骤三:混淆配置

-keepattributes Signature
-ignorewarnings
-keep class javax.ws.rs.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-dontwarn com.alibaba.fastjson.**
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.**
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}

-keep class tv.danmaku.ijk.media.player.TaobaoMediaPlayer{*;}
-keep class tv.danmaku.ijk.media.player.TaobaoMediaPlayer$*{*;}

1.4 步骤四:初始化百川SDK

// 注册三方扩展实现(使用可参见官方DEMO)
private void registerThirdInstance() {
   // 注册分享实现(具体实现说明见下文)
   ShareImpl share = new ShareImpl();
   AlibcNavigateCenter.registerNavigateUrl(share);
   // 注册图片库实现
   ImageImpl image = new ImageImpl();
   AlibcImageCenter.registerImage(image);
}
// 初始化扩展map(默认可传入空)        
Map<String, Object> params = new HashMap<>();
params.put("open4GDownload", true);

注:该参数(open4GDownload)在5.x版本以下生效;5.x版本以上已废弃(5.x版本请务必升级到5.0.0.7及以上版本)
参数说明:open4GDownload
是否开启首次4g环境下载动态组件(该组件大小12M左右)。若开启,当联盟业务依赖的百川动态组件未就绪时,将直接下载(true-开启  false-关闭,默认缺省关闭)
若不开启,如果用户一直不进wifi,那么这次升级的业务一直无法使用

AlibcTradeSDK.asyncInit(Application.this, params, new AlibcTradeInitCallback() {
  @Override
  public void onSuccess() {
      AlibcLogger.e(TAG, "SDK初始化成功");
  }
    
  @Override
  public void onFailure(int code, String msg) {
      AlibcLogger.e(TAG, "SDK初始化失败: code = " + code + ", msg = " + msg);
  }
});

2 基础接口

2.1 百川开发调试日志开关

//开发阶段打开日志开关,方便排查错误信息
 AlibcTradeCommon.turnOnDebug();
 AlibcTradeCommon.openErrorLog();
 AlibcTradeBiz.turnOnDebug();
 
 // 默认是关闭的(也支持手动关闭)
 AlibcTradeCommon.turnOffDebug();
 AlibcTradeCommon.closeErrorLog();
 AlibcTradeBiz.turnOffDebug();

2.2 设置接入媒体App信息

/**
 * 设置三方媒体应用版本号
 * /
 AlibcTradeCommon.setIsvVersion(String isvVersion);

2.3 登录授权相关

为保障正常电商页面的加载,请在需要主动登录场景下,务必使用百川sdk提供的登录api。

/**
* 登录
*/
AlibcLogin.getInstance().showLogin(new AlibcLoginCallback() {
     @Override
     public void onSuccess(String userId) {
         Toast.makeText(MainActivity.this, "login success" + " - "
                 + userId + " - " , Toast.LENGTH_SHORT).show();
     }

     @Override
     public void onFailure(int code, String msg) {
         Toast.makeText(MainActivity.this, "login fail: code = " + code + ", msg = " + msg, Toast.LENGTH_SHORT).show();
     }
 });
 
 /**
* 登出
*/
AlibcLogin.getInstance().logout(new AlibcLoginCallback() {
     @Override
     public void onSuccess(String userId) {
         Toast.makeText(MainActivity.this, "logout success", Toast.LENGTH_SHORT).show();
     }

     @Override
     public void onFailure(int code, String msg) {
         Toast.makeText(MainActivity.this, "logout fail: code = " + code + ", msg = " + msg, Toast.LENGTH_SHORT).show();
     }
 });

3 电商接口

3.1 打开电商套件页面

API说明

/**
 @param activity        当前Activity实例
 @param suiteCode       套件code
 @param bizParams       业务参数
 @param showParams      页面打开方式自定义参数
 @param taokeParams     淘客参数
 @param trackParams     链路跟踪参数(自定义)
 @param callback        打开页面事件回调
 */

void openByCode(final Activity activity, final String suiteCode, AlibcBizParams bizParams, AlibcShowParams showParams,AlibcTaokeParams taokeParams, Map<String, String> trackParams, AlibcTradeCallback callback){...}

使用示例

AlibcTrade.openByCode(MainActivity.this, code, bizParams, showParams,
                        taokeParams, trackParams, new AlibcTradeCallback() {
   @Override
   public void onSuccess(int code) {
       AlibcLogger.i(TAG, "open success: code = " + code);
   }

   @Override
   public void onFailure(int code, String msg) {
       AlibcLogger.e(TAG, "open fail: code = " + code + ", msg = " + msg);
   }
});

3.2 打开普通电商页面

API定义

/**
@param activity         当前Activity实例
@param url              目标打开的url
@param showParams       页面打开方式自定义参数
@param taokeParams      淘客参数
@param trackParams      链路跟踪参数(自定义)
@param callback         打开页面事件回调
*/

void openByUrl(final Activity activity, final String url, AlibcShowParams showParams, AlibcTaokeParams taokeParams,
Map<String, String> trackParams, AlibcTradeCallback callback){...}

使用示例

AlibcTrade.openByUrl(MainActivity.this, detailUrl, showParams, taokeParams, trackParams, new AlibcTradeCallback() {
    @Override
    public void onSuccess(int code) {
        AlibcLogger.i(TAG, "open success: code = " + code);
    }
    
    @Override
    public void onFailure(int code, String msg) {
        AlibcLogger.e(TAG, "open fail: code = " + code + ", msg = " + msg);
    }
});

3.3 相关接口参数

a、AlibcBizParams :媒体使用电商套件code方式打开页面时必传(页面渲染必须)。具体内部参数说明如下:

/**
* 商品id(详情页面必传)
*/
private String id;

/**
* 店铺id(店铺页面必传)
*/
private String shopId;

/**
* 卖家id(店铺页面必传)
*/
private String sellerId;

/**
* 扩展业务参数(涉及到联盟侧诸如返佣比例等参数,具体含义及获取会在分佣相关部分说明)
*/
private Map<String, String> extParams;

上述扩展业务参数extParams可传入如下参数,可根据自己业务需要进行设置(具体可咨询联盟相关同学)
couponActivityId: 明文券id (非必填)

vegasCode: 加密淘礼金id(淘礼金创建API(tbk_dg_vegas_tlj_create)生成的返回字段中的vegas_code值),注意生成的淘礼金pid和打开详情页的pid需要保持一致,不然会导致淘礼金领取失败:(非必填)

pageType: 媒体设置的当前页面类型:导购版本为guide、渠道管理版本为agent、返利版本为rebate (必填)

flRate: 当前用户返利比例,乘以10000后小数点可保留6位,例如:33.33333333%可以传入3333.333333

dlRate: 当前用户渠道比例,乘以10000后小数点可保留6位,例如:33.33333333%可以传入3333.333333

maxDlRate: 当前用户最高渠道比例,乘以10000后小数点可保留6为,例如:33.33333333%可以传入3333.333333

isvUserId: 媒体上下文用户参数(便于媒体决策版本和入参),用于奇门服务端交互 (非必填)

注:直播间id传入extParams中
// 其他业务参数
HashMap<String, String> extMap = new HashMap<>();
// 设置直播间id(此时不要设置商品id)
extMap.put(“id”, “258239373803”);
bizParams.setExtParams(extMap);

b、AlibcShowParams:媒体使用电商套件code方式或打开普通页面方式时必传。

/**
* 小把手
*/
private String backUrl;

/**
* 支持唯一自定义的降级url
*/
private String degradeUrl;

/**
* 降级类型
*/
private AlibcDegradeType degradeType;

/**
* 打开类型
*/
private OpenType openType;

/**
* 标题
*/
private String title;

/**
* 唤端类型:手淘:taobao,天猫:tmall
*/
private String clientType;

参数具体说明:
1、小把手:唤端返回的scheme,默认情况下如果不设置将不显示,如果需要展示,可自行传入自定义的scheme,或者传入百川sdk默认的scheme("alisdk://")
2、降级类型和降级url:这两个参数可配合使用。降级类型AlibcDegradeType为枚举类,为唤端失败降级的类型,包括三类:

NONE: 不做任何处理
H5:降级为h5
Download:降级为引导下载页

注意:以上设置非决定性降级策略,在特殊场景下会受配置管控。
如果设置降级类型设置为H5,需自行指定降级url,即degradeUrl。
3、openType:打开类型。包含Auto和Native两种类型,如果需要指定url加载要唤起淘宝或天猫客户端,可设置此参数值为Native,否则可缺省。
4、clientType:端类型,包括淘宝(taobao)和天猫(tmall)。如果上述openType指定为Native(唤端),则可以自行指定是唤起淘宝还是天猫客户端,默认缺省是唤起淘宝客户端。
5、title:webview页面的标题(默认可不用设置)

c、AlibcTaokeParams:媒体需要淘客分佣时相关入参

联盟淘客分佣变更说明(参见以下参数说明)

/**
* 1、淘客广告位
* 2、取消了原来adzoneId + appkey的方式
* 3、分佣必传,如果不传,将不会进行转链,采用原始链接加载页面
*/
public String pid;
    
/**
* 三方的淘客广告位(可选参数)
*/
public String subPid;
    
/**
* 淘客unionId
*/
public String unionId;
    
/**
* 渠道id(非必填项)
*/
public String relationId;
    
/**
* 媒体物料来源url(非必填项):数据链路的回溯支持
*/
public String materialSourceUrl;
    
/**
* 扩展参数(分佣相关的)
*/
public Map<String, String> extParams;

4 电商能力协议

4.1 电商套件页面外跳媒体页面路由协议

电商套件-商品详情页面内部有外跳到媒体首页功能。如果申请了商品详情电商套件,则需要媒体实现外跳媒体页面功能。SDK会将套件内部外跳媒体地址的URL通过协议透传给实现协议接口。建议参考Demo实现

媒体外跳页面路由协议

com.baichuan.alibctradebiz.miniapp.AlibcNavigateCenter.IUrlNavigate

public interface IUrlNavigate {
   boolean openUrl(Context var1, String var2);
}
// 这里以分享实现为例说明
public class ShareImpl implements AlibcNavigateCenter.IUrlNavigate {
    // true - 媒体处理   false -  媒体不处理
    @Override
    public boolean openUrl(Context context, String url) {
        // TODO 具体的分享实现
        Toast.makeText(context, "分享链接: " + url, Toast.LENGTH_LONG).show();
        return true;
    }
}

注册协议实现

ShareImpl share = new ShareImpl();
AlibcNavigateCenter.registerNavigateUrl(share);

4.2 电商套件使用媒体图片库能力协议

电商套件内部图片加载需要外部注入相关图片加载实现。相关申请了电商套件的媒体需要实现注入。建议参考Demo实现

图片库协议

public interface IImageProxy extends Proxiable {
    void setImageUrl(ImageView var1, String var2, IImageProxy.ImageStrategy var3);

    void loadImage(String var1, IImageProxy.ImageStrategy var2, IImageProxy.ImageListener var3);

    public static class ImageStrategy {
        public int blurRadius;
        public String sizeLimitType;
        public boolean isSharpen;
        public int roundCornerRadius;

        public ImageStrategy() {
        }
    }

    public interface ImageListener {
        void onImageFinish(Drawable var1);
    }
}
<!--具体实现,详细参见demo-->
public class ImageImpl implements IImageProxy {
    @Override
    public void setImageUrl(final ImageView view, String url, ImageStrategy imageStrategy) {
        ...
    }
    @Override
    public void loadImage(String url, ImageStrategy imageStrategy, final ImageListener imageListener) {
        ...
    }
}

注册相关图片库协议

ImageImpl image = new ImageImpl();
AlibcImageCenter.registerImage(image);

日志排查
百川电商SDK在运行时,会将运行日志直接落盘到/sdcard/android/data/$packagename/files/baichuan/ 目录下。
开发阶段如果碰到电商套件打开问题无法自行定位,可通过
adb pull /sdcard/android/data/$packagename/files/baichuan/ 获取日志文件,联系百川同学协查。
其中packagename为媒体app的包名
上线运行时,如果为用户提供了舆情反馈问题,如涉及百川电商相关的问题,建议媒体将百川电商日志一并上传到服务端。在无法自行定位时,可将日志问题提交给百川同学协查。

File[] files = new File(AlibcTradeCommon.getLogFilePath()).listFiles();
 for (File file : files) {
     uploadFile(file);
 }

自检工具
从4.9.2.6(含)之后的版本增加自检工具能力,5.0.0.13及以后的版本需要参照前文显式依赖才可用,具体接入方式如下:
打开日志分析工具

AlibcCommonUtils.setOpenAnalysisTool(true);

方式1:直接打开自检工具主界面(入参1为当前的上下文,一般为当前的Activity实例;入参2为固定的字符串baichuan)

AnalyzerTools.openAnalyzerActivity(MainActivity.this, "baichuan");

方式2:悬浮窗的形式打开(该方式需要申请悬浮窗权限)

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

调用方式

AnalyzerTools.showFloatWindow(MainActivity.this, "baichuan");

TOP Native授权:
注:在5.0.0.13及之后版本,需要全量回归验证之前通过oauth链接进行授权的方式,保证完整迁移,不影响原有业务。
参数说明:
参数1:上下文,一般为Activity实例
参数2:授权弹窗的icon,支持url和本地资源图片
参数3:授权应用名称
参数4:授权回调接口

String appkey = "媒体自主传入appkey";
TopAuth.showAuthDialog(MainActivity.this, R.mipmap.ic_launcher_round, "百川测试Demo", appkey, new AuthCallback() {
     @Override
     public void onSuccess(String accessToken, String expireTime) {
          Toast.makeText(MainActivity.this, "accessToken=" + accessToken
                          + ", expireTime=" + expireTime, Toast.LENGTH_SHORT).show();
          }

     @Override
     public void onError(String code, String msg) {
          Toast.makeText(MainActivity.this, "code=" + code + ", msg=" + msg, Toast.LENGTH_SHORT).show();
     }
});
或者
TopAuth.showAuthDialog(MainActivity.this, "http://xxx", "百川测试Demo", appkey, new AuthCallback() {
     @Override
     public void onSuccess(String accessToken, String expireTime) {
          Toast.makeText(MainActivity.this, "accessToken=" + accessToken
                          + ", expireTime=" + expireTime, Toast.LENGTH_SHORT).show();
          }

     @Override
     public void onError(String code, String msg) {
          Toast.makeText(MainActivity.this, "code=" + code + ", msg=" + msg, Toast.LENGTH_SHORT).show();
     }
});

5.x版本新增能力:通用事件通知
描述:套件相关事件会通过回调方式返回,包括通用事件名称和事件内容。其中事件名称类型为String,事件内容为json对象,具体内容根据业务对接进行解析
具体使用方式:

接口:com.alibaba.alibctriver.extensions.EventCenter.NotifyListener#onNotify
自行实现该接口
EventCenter.registerEventListener(new EventCenter.NotifyListener() {
    @Override
    public void onNotify(String name, Object content) {
        // TODO 实现该接口
        Toast.makeText(MainActivity.this, "内容复制到剪切板", Toast.LENGTH_SHORT).show();
    }
});

注意事项:
1、由于Android P限制Http明文请求,强制让应用走https。需要在应用配置文件AndroidManifest文件的application标签中添加如下:

android:networkSecurityConfig="@xml/network_security_config"

同时在res下创建一个xml的目录,新建一个文件network_security_config.xml。文件内添加如下内容:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

2、部分敏感权限问题说明
考虑到以下权限的敏感性,sdk将相关权限移除,交由接入方自行在主包清单文件中进行添加
删除的权限声明如下:

android.permission.READ_PHONE_STATE
android.permission.WRITE_SETTINGS
android.permission.BLUETOOTH
android.permission.READ_SETTINGS
android.permission.GET_TASKS

具体可采用如下方式添加这些权限:
可以通过merge或replace的方式进行清单权限合并处理

<uses-permission android:name="android.permission.READ_PHONE_STATE"
        tools:node="merge"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:node="merge"/>
<uses-permission android:name="android.permission.BLUETOOTH"
        tools:node="merge"/>
<uses-permission android:name="android.permission.READ_SETTINGS"
        tools:node="merge"/>
<uses-permission android:name="android.permission.GET_TASKS"
        tools:node="merge"/>

3、关于直接打开s.click链接分佣说明
百川SDK不支持s.click(或uland)链接的二次转链逻辑,如果采用openByUrl方式打开该类链接,请勿传入pid等分佣参数;
若需要使用其他渠道获取的s.click链接进行分佣,可自行去淘客联盟后台生成自己的s.click链接或调用联盟服务接口生成。

5 SDK变更说明

5.1 WebView说明

不再接收外部传入webView, H5的页面将采用内置的百川自定义WebView实例加载

5.2 淘宝授权链路变化

原有淘宝授权页拦截授权码功能,需要在授权回跳H5页面上进行处理上报给媒体服务端,处理完成后同时可以调用百川JSBridge关闭当前webView。

建议淘宝授权流程:
1、使用百川API(openByUrl)打开授权页面。(注 授权页的回调页是媒体自行设置的,后续获取授权code需要回调H5页面设置)
2 、H5页面引入百川 js bridge 脚本:https://g.alicdn.com/mtb/lib_BC/0.1.0/p/index/index.js
3、媒体回调页H5获得授权code后, 调用百川JS API Baichuan.closeWebView(commonCallback); 关闭当前webview

5.3 关于电商SDK初始化时机

加入了电商套件的百川SDK为了提升用户体验,强烈建议媒体在Application中进行百川SDK初始化。且确保已获得网络权限。

6 详情页推荐&购物车商品

6.1 服务端奇门交互

奇门API对外文档地址
媒体对接文档

FAQ

关于此文档暂时还没有FAQ
返回
顶部