感谢您的反馈!
点我申请 成功后将获得appkey和appsecret
为了数据安全,建议将appkey和appsecret存在string.xml里使用
(1) jar包方式:点我下载直接下载applink的SDK,将jar包放到您项目的libs目录下即可。
(2) Maven方式:使用 Maven 工程依赖的方式接入AppLinkSDK的包,将下面依赖的配置粘贴到项目下 pom.xml 文件中即可:
<dependency> <groupId>com.taobao.android</groupId> <artifactId>wopc_sdk_core</artifactId> <version>1.1.1</version> <type>aar</type> </dependency>
(3) Gradle方式:使用 Gradle 工程依赖的方式接入AppLinkSDK的包,将下面依赖的配置粘贴到项目下 build.gradle 文件中即可:
compile(group: 'com.taobao.android', name: 'wopc_sdk_core', version:'1.1.1')
添加必要的权限支持:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
当从你的app跳转到手淘,当手淘里的操作结束时,需要从手淘跳转到你的app时,请务必传入backurl的值;
android原生支持使用url启动activity,手淘在通过url唤起相应的activity的时候会使用默认的action为android.intent.action.VIEW,category为android.intent.category.DEFAULT
例如:我们设MainActivity的url为tbopen:m.sdk.com
在AndroidManifest.xml中对应的activity节点下对action和data等标签进行如下配置即可
<activity android:name=".activity.MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:pathPrefix="/index.html" android:host="m.sdk.com" android:scheme="tbopen" /> </intent-filter> </activity>
如果需要混淆代码,为了保证sdk的正常使用,需要在混淆规则上加上如下规则:
-keep class com.taobao.applink.param.** { *; }
在调用applink的有关代码前,需要对applink进行初始操作。SDK初始化在调用其他函数前完成,只需要TBAppLinkSDK.getInstance().init(TBAppLinkParam),传入相应的参数即可。
使用TBAppLinkParam如下的构造函数
public TBAppLinkParam(String appkey,String appSecret,String backUrl,String pid) {...}
TBAppLinkParam还提供set方式来传入参数
TBAppLinkParam param = new TBAppLinkParam("appkey","appSecret","backUrl","pid"); param.setSource("source").setTag("tag")......
传入的主要参数有appkey,appSecret,backUrl,pid
以上参数均可传空,但是同时也会失去对应的功能
参数名 | 作用 |
---|---|
appkey | 用于区分不同的应用提供者 |
appSecret | 用于区分不同的应用提供者 |
backUrl | 通过backurl,可以制定从手淘返回到三方app的activity,在具体跳转时,不设置以此为**默认** |
pid | 用于计算佣金 |
添加umpChannel和u_channel两个参数
TBDetailParam detailparam = new TBDetailParam("****itemId****"); HashMap<String, String> map = new HashMap<String, String>();//参数 map.put("umpChannel","......"); map.put("u_channel","......."); detailparam.addExtraParams(map); try { TBAppLinkSDK.getInstance().jumpDetail(context, param); } catch (TBAppLinkException e) { e.printStackTrace(); }
在Android客户端上,当用户未安装手淘或者是安装的手淘不支持applink时会出现跳转失败。
TBAppLinkSDK.getInstance().setJumpFailedMode(JumpFailedMode.OPEN_H5);
SDK提供了3种方式来处理跳转失败的情况:
1. DOWNLOAD_TAOBAO:提示用户下载并安装手淘,如果没有设置过,默认为该模式.
2. OPEN_H5:在浏览器中调到H5页面。
3. NONE:SDK不做任何处理。
SDK使用方在调用相关的jump函数后,可以根据方法的返回值判断调用是否成功,并进行相关的处理。
本部分,只有在使用js调用时才需要进行相关的操作。调用时,传入WebView和对应的WebViewClient对象(WebViewClient对象可以为空)。
请确保,在本操作结束后,WebView的WebViewClient不再更改,也就是说一定不能在调用完 setupJsBridge 后去调用 setWebViewClient 方法。只有在本操作结束后方可load url。
TBAppLinkBridgeSDK.getInstance().setupJsBridge(WebView webView,WebViewClient client);
注:
1、由于使用url跳转activity是隐式启动,所以建议应用中配置url的activity和url是一一对应的关系
2、关于data标签的具体配置细节,请参考Android官方开发网站[data章节
各接口手淘版本支持情况
接口名称 | 手淘版本支持情况 |
---|---|
跳转到详情 | 5.4.0及以上 |
跳转到店铺 | 5.4.0及以上 |
跳转到指定URI | 5.4.0及以上 |
授权 | 5.4.0及以上 |
跳转时必须设置itemId.
e,type,backurl等参数非必需,不传则默认为SDK初始化时的参数.
TBDetailParam param = new TBDetailParam("itemid"); param.setBackUrl("...").setE("..."); HashMap<String,String> map = new HashMap<String,String>(); map.put("your_data_key","your_data"); map.put("...","..."); param.addExtraParams(map); try { TBAppLinkSDK.getInstance().jumpDetail(context, param); } catch (TBAppLinkException e) { e.printStackTrace(); }
跳转时必须设置shopId.
e,type,backurl等参数非必需,不传则默认为SDK初始化时的参数.
TBShopParam param = new TBShopParam("shopid"); param.setBackUrl("...").setE("..."); HashMap<String,String> map = new HashMap<String,String>(); map.put("your_data_key","your_data"); map.put("...","..."); param.addExtraParams(map); try { TBAppLinkSDK.getInstance().jumpShop(context, param); } catch (TBAppLinkException e) { e.printStackTrace(); }
效果等同于在手机淘宝中用扫一扫进入.可以进入详情,店铺,会场等.
跳转时必须设置url.
e,type,backurl等参数非必需,不传则默认为SDK初始化时的参数.
TBURIParam param = new TBURIParam("http://m.taobao.com"); param.setBackUrl("...").setE("..."); HashMap<String,String> map = new HashMap<String,String>(); map.put("your_data_key","your_data"); map.put("...","..."); param.addExtraParams(map); try { TBAppLinkSDK.getInstance().jumpURI(context, param); } catch (TBAppLinkException e) { e.printStackTrace(); }
授权采用OAuth2.0协议;
跳到手机淘宝进行授权,成功后返回authcode;
授权返回的结果是通过onActivityResult返回的;
//requestCode用于区分结果的来源 TBAuthParm authParam = new TBAuthParam(requestCode); //redirectUri是当手淘没安装走h5时需要的参数 authParam.setRedirectUri("http://tmshow.play.jaeapp.com"); try { TBOpenSDK.getInstance().doAuth(activity,authParam}); } catch (TBAppLinkException e) { e.printStackTrace(); }
redirectUri 的参数是当手淘没有安装,走h5页面的授权方式时需要的参数,在h5页面上授权成功后会回调redirectUri,把authcode的值带过去,开发者可以在处理完authcode之后,在浏览器里打开自己的app(此流程需要开发者自己实现)
在onActivityResult里取authcode的值(这部分逻辑请开发者自行控制)
resultCode的值及含义
resultCode值 | 含义 |
---|---|
-2 | 错误 |
-1 | 成功 |
0 | 取消 |
if(requestCode == 100001){ if(null != data && resultCode == -1 ){ data.getStringExtra("result"); } }
拿到authcode去换取token等值的请参考:http://jaq-doc.alibaba.com/docs/doc.htm.htm?spm=0.0.0.0.LF3ZsH&treeId=1&articleId=102635&docType=1
1.0.0 第一个版本发布,包括跳转店铺、详情、h5页面的功能,并提供渠道优惠、淘客的结算
1.0.1 bug fix:传进来的context为Application的情形
1.1.0 开授权的接口,采用OAuth2.0协议获取authcode
1.1.1 bug fix:降级方案的完善