阿里百川(百川应该取自海乃百川的意思,阿里提供一片海,汇入各种第三方应用)是阿里无线推出的一个计划,输出基础设施,打造一个开放的移动互联网应用开发及商业化平台。百川平台提供一个完整的解决方案,覆盖技术、数据服务、商业化,阿里百川甚至还具有一部分创业孵化功能,对于看中的APP,会提供创业场地与融资支持。
1、注册百川无线应用
2、开通业务产品的使用权限(根据情况决定开通初级电商还是高级电商)
3、获取安全图片
需要上传apk包,主要是获取包名以及签名,生成安全图片,所以这个安全图片与你上传的签名有关系,如果签名文件变了,那么安全图片要重新生成。
什么是安全图片- 百川平台将从上传的包内提取签名,包名等信息(所以为了获取安全图片所上去的apk只要包含签名和包名即可,其他内容随意),并加密存储到下载 SDK 中的安全图片。SDK 启动时会校验当前 apk 和图片中的签名信息,以避免发布的安装包被恶意篡改。另外,请注意如下事项:
- 1)因为只提取安装包的签名以及包名信息,所以上传时对安装包的内容没有任何要求。
- 2)请确保后续开发中用于 apk 签名的 keystore 和上传 apk 所使用的保持一致。
- 3)如开发过程中或最终发布应用时需要切换其他 keystore,请上传使用新 keystore 签名的 apk 重新生成 SDK,并拷贝下载 SDK 中新的安全图片 ( res/drawable/yw_1222.jpg) 并替换掉当前开发工程中相同位置的同名文件。
- 安全图片是使用应用的appkey和其他相关信息(android还需要提供keystore签名的apk文件)一起加密生成的1像素点的加密图片。
- 使用时请将图片改名为yw_1222.jpg,只需根据iOS和android放在对应的目录下,iOS:只要把安全图片放到工程目录底下即可; Android:需要把安全图片放到/res/drawable下。
- 调用时,android客户端SDK会校验安全图片中加密的keystore和当前程序中的keystore是否一致,如果不一致初始化会失败。iOS客户端SDK会校验校验安全图片中加密的appkey信息和当前程序中的URL Types里面填写的appkey应用是否一致,若不一致也会报错。
项目根目录下的build.gradle
buildscript {
repositories {
maven {
url 'https://maven.google.com'
}
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
maven {
url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
}
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app内的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "29.0.1"
defaultConfig {
applicationId "com.mingliang.fl"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
android {
lintOptions {
abortOnError false
}
}
}
repositories {
flatDir {
dirs 'libs', '../libs'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//支付宝
// implementation 'com.alipay.android.app.cashier:standardcashier-single:15.6.5@aar'
// compileOnly 'com.alipay.mobile.android.securitysdk:apsecuritysdk-all:3.3.0'
//登陆
// implementation(name:'alibabauth_core-2.0.0.6', ext:'aar')
// implementation(name:'alibabauth_ui-2.0.0.6', ext:'aar')
// implementation(name:'alibabauth_ext-2.0.0.6', ext:'aar')
implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.6@aar'
implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.6@aar'
implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.6@aar'
//安全组件
// implementation(name:'securityguardaar3-5.4.11776953-preInstall-20190812.024439-1', ext:'aar')
// implementation(name:'securitybodyaar3-5.4.95-preInstall-20190725.115618-1', ext:'aar')
// implementation(name:'avmpaar3-5.4.11773689-preInstall-20190812.024446-1', ext:'aar')
// implementation(name:'sgmiddletieraartest-6.4.999-NOFC-external-preinstall-20190819.071646-1', ext:'aar')
implementation 'com.taobao.android:securityguardaar3:5.4.171@aar'
implementation 'com.taobao.android:securitybodyaar3:5.4.99@aar'
implementation 'com.taobao.android:avmpaar3:5.4.36@aar'
implementation 'com.taobao.android:sgmiddletieraar3:5.4.9@aar'
//Mtop(jar包远端依赖)
implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.2.5@jar'
//applink
// implementation(name:'alibc_link_partner-4.1.6', ext:'aar')
implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.10@aar'
//ut(jar包远端依赖)
implementation 'com.taobao.android:utdid4all:1.1.5.3_proguard'
implementation 'com.alibaba.mtl:app-monitor-sdk:2.6.4.5_for_bc'
// 电商基础组件
// implementation(name:'AlibcTradeCommon-3.1.1.243', ext:'aar')
// implementation(name:'AlibcTradeBiz-3.1.1.243', ext:'aar')
// implementation(name:'nb_trade-3.1.1.243', ext:'aar')
implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.2@aar'
implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.2@aar'
implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.2@aar'
implementation 'com.alibaba:fastjson:1.2.41'
}
修改AndroidManifest.xml
- 在Application onCreate()中异步初始化
//电商SDK初始化
AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() {
@Override
public void onSuccess() {
Toast.makeText(AliSdkApplication.this, "初始化成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int code, String msg) {
Toast.makeText(AliSdkApplication.this, "初始化失败,错误码="+code+" / 错误消息="+msg, Toast.LENGTH_SHORT).show();
}
});
工具类
public class BaiChuanUtil {
private final static String H5 = "H5";
private final static String TAOBAO = "taobao";
private final static String TMALL = "tmall";
private final static String AUTO = "auto";
private static void showDetailPage(Activity activity, String id, String type) {
AlibcShowParams alibcShowParams;
switch (type) {
case H5:
alibcShowParams = new AlibcShowParams(OpenType.H5, false);
break;
case TAOBAO:
alibcShowParams = new AlibcShowParams(OpenType.Native, false);
alibcShowParams.setClientType("taobao_scheme");
break;
case TMALL:
alibcShowParams = new AlibcShowParams(OpenType.Native, false);
alibcShowParams.setClientType("tmall_scheme");
break;
case AUTO:
alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
break;
default:
alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
break;
}
AlibcBasePage alibcBasePage = new AlibcDetailPage(id);
HashMap exParams = new HashMap();
// 固定写法
exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
// 若非淘客taokeParams设置为null即可 mm_memberId_siteId_adzoneId
// pid:广告位id
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("mm_123352308_40788301_344524398", "mm_123352308_40788301_344524398", null);
AlibcTrade.show(activity, alibcBasePage, alibcShowParams, alibcTaokeParams, exParams, new AlibcTradeCallback() {
@Override
public void onTradeSuccess(AlibcTradeResult alibcTradeResult) {
}
@Override
public void onFailure(int i, String s) {
// Toast.makeText(App.getInstance(), "初始化失败,错误码=" + i + " / 错误消息=" + s, Toast.LENGTH_SHORT).show();
}
});
}
/**
* 跳淘宝详情
*/
public static void showTaobaoDetail(Activity activity, String id) {
if (Tools.isApplicationAvilible(activity, "com.taobao.taobao")) {
showDetailPage(activity, id, TAOBAO);
} else {
showDetailPage(activity, id, AUTO);
}
}
/**
* 跳天猫详情
*/
public static void showTmallDetail(Activity activity, String id) {
if (Tools.isApplicationAvilible(activity, "com.tmall.wireless")) {
showDetailPage(activity, id, TMALL);
} else {
showDetailPage(activity, id, AUTO);
}
}
}
以上是Android配置部分接下来是网站上需要设置的 首先找到控制台
创建应用
重要的是应用包名要写对
获取安全图片,如果你上传一直失败,请把使用gradle3.0以下的编译环境的包,比如
classpath 'com.android.tools.build:gradle:2.3.3'
下载安全图片放入如图,最好不要改它名字,(我没试过)
开通两项功能
进入淘宝联盟,使用之前的帐号登录
新增app推广
来到联盟首页,随意搜索商品推广
选择之前新建的已经通过审核的app
来到app推广位就可以看到我们要推广的产品了,其中比较重要的是pid
代码中的使用
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams(pid, pid, null);
之前我们搜索的商品点进去
在地址栏可以获取到该商品的id
代码中的体现
AlibcBasePage alibcBasePage = new AlibcDetailPage(id);
结束!