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'
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.alibaba.sdk.android:alibc_link_partner:4.1.20@aar'
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'
allprojects { repositories { jcenter() maven { url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/" } } }
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' ..... }
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); } });
//开发阶段打开日志开关,方便排查错误信息 AlibcTradeCommon.turnOnDebug(); AlibcTradeCommon.openErrorLog(); AlibcTradeBiz.turnOnDebug(); // 默认是关闭的(也支持手动关闭) AlibcTradeCommon.turnOffDebug(); AlibcTradeCommon.closeErrorLog(); AlibcTradeBiz.turnOffDebug();
/** * 设置三方媒体应用版本号 * / AlibcTradeCommon.setIsvVersion(String isvVersion);
/** * 登录 */ 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>
不再接收外部传入webView, H5的页面将采用内置的百川自定义WebView实例加载
原有淘宝授权页拦截授权码功能,需要在授权回跳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
加入了电商套件的百川SDK为了提升用户体验,强烈建议媒体在Application中进行百川SDK初始化。且确保已获得网络权限。