【Android】百川SDK接入文档

更新时间:2020/02/26 访问次数:3717

百川SDK4.9.0.0接入指南

Android百川组件说明

  • 打包体积说明(待定)
  • 基础安全组件(必选)
    • 安全黑匣子(无线保镖),加密&解密,安全签名,风控相关内容;其中包含 x86、x86_64、arm64-v8a、armeabi、armeabi-v7a 五个架构平台的so包,整包大小为1.8M,每个平台的so包为400kb左右,可以进行裁剪;如需裁剪,请联系百川技术同学
    implementation 'com.taobao.android:securityguardaar3:5.4.191@aar' 
    implementation 'com.taobao.android:securitybodyaar3:5.4.110@aar' 
    implementation 'com.taobao.android:avmpaar3:5.4.40@aar' 
    implementation 'com.taobao.android:sgmiddletieraar3:5.4.13@aar'
  • mtop(必选)

    • Mtop,网关(稳定的高性能无线RPC网关,网关本身包含了一套安全体系,包括加密传输、防攻击、防刷、防篡改、过载保护等安全策略,同时针对无线网络的特点,在连通性、网络加速、流量方面进行了针对性优化)(177kb)
    implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.7.2@jar'
  • 登录授权(必选)
    implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.7@aar' 
    implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.7@aar' 
    implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.7@aar'
  • appLink(必选)
    • applink,打通“手机淘宝”与三方app的桥梁,实现手机淘宝与三方app之间的往返跳转,包括登陆时跳手淘授权,用手淘打开商品页,店铺等(53kb)
    implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.20@aar'
  • ut (必选)
  • ut 用于分佣打点追踪
    implementation 'com.taobao.android:utdid4all:1.5.2' 
    implementation 'com.taobao.android:ut-analytics:6.5.8.22'
  • 广告SDK(必选)

    • 淘客分佣转链
    implementation 'com.taobao.munion.sdk:bc-ad-sdk:1.0.0'
  • 基础电商组件(必选)

    • 包含打开detail,淘客分佣,jsbridge注入等功能.
    implementation 'com.alibaba.ultimate.sdk.android:alibctradecommon:4.9.0.0'
      implementation 'com.alibaba.ultimate.sdk.android:AlibcTradeBiz:4.9.0.0'
      implementation 'com.alibaba.ultimate.sdk.android:AlibcNbtrade:4.9.0.0'

Gradle接入方式

  • 获得安全图片(图片获取方式见接入准备文档),并放在/res/drawable目录下,如果已经有安全图片,需要替换。
  • 老用户升级,请先删除原来的所有jar & aar依赖
  • gradle配置
    • 在整个项目的gradle基础配置文件中加入仓库地址:
    allprojects {
     repositories {
       jcenter()
           maven {
                url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
            }
        }
    }
    • 在项目module的gradle文件中加入相关依赖
    dependencies { 
     ..... 
     // 登陆 
     implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.7@aar' 
     implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.7@aar' 
     implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.7@aar' 
     // 安全组件 
     implementation 'com.taobao.android:securityguardaar3:5.4.191@aar' 
     implementation 'com.taobao.android:securitybodyaar3:5.4.110@aar' 
     implementation 'com.taobao.android:avmpaar3:5.4.40@aar' 
     implementation 'com.taobao.android:sgmiddletieraar3:5.4.13@aar'
     // Mtop 
     implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.7.2@jar' 
     // applink 
     implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.20@aar' 
     // ut 
     implementation 'com.taobao.android:utdid4all:1.5.2' 
     implementation 'com.taobao.android:ut-analytics:6.5.8.22' 
     // 广告SDK
     implementation 'com.taobao.munion.sdk:bc-ad-sdk:1.0.0'
     // 电商基础组件 
     implementation 'com.alibaba.ultimate.sdk.android:alibctradecommon:4.9.0.0'
     implementation 'com.alibaba.ultimate.sdk.android:AlibcTradeBiz:4.9.0.0'
     implementation 'com.alibaba.ultimate.sdk.android:AlibcNbtrade:4.9.0.0'
     implementation 'com.alibaba:fastjson:1.2.41'
     ..... 
    }

aar接入方式

  • 将各个sdk的aar文件下载放到到本地工程的libs目录下,按照如下方式接入:(name以实际的本地aar或jar包的名字为准)
dependencies {
    .....
    //支付宝
    implementation(name:'standardcashier-single', ext:'aar')
    compileOnly(name:'apsecuritysdk-all', ext:'jar')
    //登陆
    implementation(name:'alibabauth_core', ext:'jar')
    implementation(name:'alibabauth_ui', ext:'aar')
    implementation(name:'alibabauth_ext', ext:'jar')
    //安全组件
    implementation(name:'securityguardaar3', ext:'aar')
    implementation(name:'securitybodyaar3', ext:'aar')
    implementation(name:'avmpaar3', ext:'aar')
    implementation(name:'MiddleTierSDK-external-debug', ext:'aar')
    //Mtop
    implementation(name:'mtopsdk_allinone_open', ext:'jar')
    //applink
    implementation(name:'alibc_link_partner', ext:'aar')
    //ut
    implementation(name:'utdid4all', ext:'jar')
    implementation(name:'app-monitor-sdk', ext:'jar')
    // 电商基础组件
    implementation(name:'AlibcTradeCommon', ext:'aar')
    implementation(name:'AlibcTradeBiz', ext:'aar')
    implementation(name:'nb_trade', ext:'aar')
    implementation 'com.alibaba:fastjson:1.2.41'
    .....
}

混淆原则

-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.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}
-keep class com.ali.auth.**  {*;}
-dontwarn com.ali.auth.**
-keep class com.taobao.securityjni.** {*;}
-keep class com.taobao.wireless.security.** {*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
-keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}

-keep class com.baichuan.alibctradebiz.webview.instance.** {
    !private <fields>;
    !private <methods>;
}

-keep class com.baichuan.alibctradebiz.miniapp.container.** {
    !private <fields>;
    !private <methods>;
}

-keep class com.baichuan.alibctradebiz.biz.jsplugin.** {
    !private <fields>;
    !private <methods>;
}

-keep class com.baichuan.alibctradebiz.webview.jsbridge.plugin.** {
    !private <fields>;
    !private <methods>;
}

快速入门

初始化


// 初始化扩展map(默认可传入空) Map<String, Object> params = new HashMap<>(); 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); } });

电商API的使用

  • 百川开发调试日志开关
//开发阶段打开日志开关,方便排查错误信息
 AlibcTradeCommon.turnOnDebug();
 AlibcTradeCommon.openErrorLog();
 AlibcTradeBiz.turnOnDebug();
 
 // 默认是关闭的(也支持手动关闭)
 AlibcTradeCommon.turnOffDebug();
 AlibcTradeCommon.closeErrorLog();
 AlibcTradeBiz.turnOffDebug();
  • 设置接入媒体App信息
/**
 * 设置三方媒体应用版本号
 * /
 AlibcTradeCommon.setIsvVersion(String isvVersion);
  • 登录授权相关(为保障正常电商页面的加载,请在需要主动登录场景下,务必使用百川sdk提供的登录api。)
/**
* 登录
*/
AlibcLogin.getInstance().showLogin(new AlibcLoginCallback() {
     @Override
     public void onSuccess(int result, String userId, String userNick) {
         Toast.makeText(MainActivity.this, "login success" + " - "
                 + userId + " - " + userNick, 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(int result, String userId, String userNick) {
         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();
     }
 });
  • 打开电商套件页面

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);
   }
});
  • 打开普通电商页面

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);
    }
});
  • 相关接口参数

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

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

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

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

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

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;

注意事项:
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>

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.2/p/index/index.js
3、媒体回调页H5获得授权code后, 调用百川JS API Baichuan.closeWebView(commonCallback); 关闭当前webview

5.3 关于电商SDK初始化时机

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

FAQ

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