更新记录

1.1.0(2021-04-01)

淘客授权使用自定义 webview 拦截 code,提升用户体验。


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


阿里百川接入指南

同时集成阿里百川和支付宝支付会造成UTDID SDK冲突,该插件剔除了UTDID SKD以确保可以正常使用uniapp的支付宝支付模块 无需使用支付宝支付模块的可以接入我的另外一个 百川插件

1、下载安全图片放入对应的目录下

  • android: nativeplugins\szjingyu-baichuan-noutdid\android\res\drawable\yw_1222_baichuan.jpg
  • ios: nativeplugins\szjingyu-baichuan-noutdid\ios\yw_1222_baichuan.jpg

2、配置 URL Types 和 URL Scheme 白名单

打开 mainfest.json,切换到源码视图,在 app-plus -> distribute -> ios 节点下添加如下配置

"urltypes": [
    {
        "urlidentifier": "com.alibaba.baichuan",
        "urlschemes": ["tbopen{AppKey}"]
    }
],
"urlschemewhitelist": ["tbopen", "tmall"]

tbopen{AppKey} 中的 appkey 为百川 appkey (百川控制台app中查询), 不是 AppID,如tbopen123456

在 app-plus 节点下添加如下配置

"schemeWhitelist": [
    ["tbopen", "tmall"]
]

百川电商SDK4.x,主要功能如下:

  • init: 百川初始化
  • login: 百川授权
  • getUserInfo: 获取用户信息
  • isLogin: 是否登录
  • logout: 退出登录
  • openUrl: 打开URL(包括H5、唤起手淘等)
  • openItemDetail: 打开商品详情
  • openShop: 打开店铺
  • openCart: 打开购物车
  • isTaobaoInstalled: 是否安装淘宝app
  • isTmallInstalled: 是否安装天猫app

示例

<template>
  <view class="page">
    <button class="btn" @click="init">百川初始化</button>
    <button class="btn" @click="login">百川授权</button>
    <button class="btn" @click="isLogin">是否登录</button>
    <button class="btn" @click="getUserInfo">获取用户信息</button>
    <button class="btn" @click="openUrl">打开URL</button>
    <button class="btn" @click="openItemDetail">打开商品详情</button>
    <button class="btn" @click="openShop">打开店铺</button>
    <button class="btn" @click="openCart">打开购物车</button>
    <button class="btn" @click="taokeLogin">淘客授权</button>
    <button class="btn" @click="logout">退出登录</button>
  </view>
</template>

<script>
  import stringify from 'qs/lib/stringify';

  const BCPlugin = uni.requireNativePlugin('szjingyu-baichuan-noutdid');
  const pid = process.env.VUE_APP_TBK_PID;

  export default {
    methods: {
      init() {
        if (process.env.NODE_ENV === 'development') {
          BCPlugin.setDebugLogOpen(true);
        }
        BCPlugin.setIsvVersion(plus.runtime.version);
        BCPlugin.setIsvCode(plus.runtime.versionCode);
        BCPlugin.setIsvAppName('百川插件demo');

        BCPlugin.init(data => {
          if (!data.status) {
            uni.showToast({
              icon: 'none',
              title: data.msg,
            });
            return;
          }
        });
      },
      async login() {
        return new Promise((resolve, reject) => {
          if (BCPlugin.isLogin()) {
            resolve();
            return;
          }

          BCPlugin.login(({ status }) => {
            if (status) {
              resolve();
            } else {
              reject();
            }
          });
        });
      },
      isLogin() {
        uni.showModal({
          content: BCPlugin.isLogin() ? '已登录百川' : '未登录百川',
        });
      },
      getUserInfo() {
        const userinfo = BCPlugin.getUserInfo();
        uni.showModal({
          content: JSON.stringify(userinfo),
        });
      },
      openUrl() {
        const url = 'https://m.tb.cn/h.4jZqiCM?sm=5fbdf4';

        const options = {
          backUrl: 'baichuandemo://',
          extParams: {
            sellerId: 245454215454,
          },
          trackParams: {
            xxx: 'xxx',
          },
        };

        this.openTBUrl(url, options);
      },
      openItemDetail() {
        const itemId = '575688730394';

        const options = {
          backUrl: 'baichuandemo://',
          itemId,
        };

        BCPlugin.openItemDetail(options, data => {
          console.info(data);
        });
      },
      openShop() {
        const shopId = '113669907';

        const options = {
          backUrl: 'baichuandemo://',
          shopId,
        };

        BCPlugin.openShop(options, data => {
          console.info(data);
        });
      },
      openCart() {
        const options = {};

        BCPlugin.openCart(options, data => {
          console.info(data);
        });
      },
      async taokeLogin() {
        if (!BCPlugin.isLogin()) {
          await this.login();
        }

        return new Promise((resolve, reject) => {
          const url = 'https://oauth.m.taobao.com/authorize?' + stringify({
            client_id: process.env.VUE_APP_TB_OAUTH_CLIENT_ID,
            response_type: 'code',
            redirect_uri: process.env.VUE_APP_TB_OAUTH_REDIRECT_URI,
            state: '',
            force_auth: true,
            view: 'wap',
          });

          this.openTBUrl(url, { openType: 'auto' }, async ({ status, data }) => {
            if (status) {
              console.info(data); // { code: xxx, state: xxx }
              // todo 请求服务器授权 

              resolve();
              return;
            }

            reject();
          });
        });
      },
      openTBUrl(url, options = {}, callback = null) {
        const params = {
          openType: 'native',
          nativeFailMode: 'download',
          schemeType: 'taobao',
          // isNeedPush: true,
          ...options,
          pid,
          url,
        };

        if (params.schemeType === 'tmall' && !BCPlugin.isTmallInstalled()) {
          params.schemeType = 'taobao';
        }

        if (params.schemeType === 'taobao' && !BCPlugin.isTaobaoInstalled()) {
          // 拉新活动结束了
          // params.url = 'https://mos.m.taobao.com/activity_newer';
        }

        BCPlugin.openUrl(params, data => {
          console.info(data);
          if (callback && typeof callback === 'function') {
            callback(data);
          }
        });
      },
      logout() {
        BCPlugin.logout(data => {
          console.log(data);
        });
      },
    },
  };
</script>

<style>
  .btn {
    margin: 8rpx 16rpx;
  }
</style>

API

setDebugLogOpen(Boolean isDebugLogOpen)

日志开关,HBuilderX 下无效果。

setIsSyncForTaoke(Boolean isSync)

设置是否对淘客使用同步打点 默认的淘客打点方式,sdk会自己选择合适的方式,调用该接口与否不影响打点,建议开发者不要调用自己配置 只有跟阿里妈妈申请了高分润的才需要设为同步

setIsvVersion(String version)

设置三方App版本,可用于标识App版本

setIsvAppName(String appName)

设置三方App名称,可用于标识App

setIsvCode(String code)

设置App标识字段,和isvcode同义,可用于区分使用本SDK的具体三方App

setChannel(String type, String name)

设置渠道信息,渠道专享价专用.

@param type 渠道类型 @param name 渠道名

init(Callback callback)

初始化函数,初始化成功后方可正常使用SDK中的功能

callback 返回参数
参数 类型 说明
status Boolean 状态
msg String 提示信息

login(Callback callback)

百川授权 - 登录

callback 返回参数
参数 类型 说明
status Boolean 状态
msg String 提示信息
data Object 用户信息

getUserInfo()

获取用户信息

返回参数
参数 类型 说明
status Boolean 状态
msg String 提示信息
data Object 用户信息
data.nick String 用户昵称
data.avatarUrl String 头像地址
data.openId String openId
data.openSid String openSid
data.topAccessToken String topAccessToken
data.topAuthCode String topAuthCode

isLogin()

是否登录

logout(Callback callback)

退出登录

callback 返回参数
参数 类型 说明
status Boolean 状态
msg String 提示信息

openUrl(Object options, Callback callback)

打开URL(包括H5、唤起手淘等)

options 参数说明
参数 类型 必填 说明
url String 需要打开的URL地址
openType String 页面打开方式
auto(默认值): 不做设置
native: 唤端
isNeedPush Boolean 使用百川webView支持push、present两种方式,Android该参数无效。
false(默认值): 在当前view controller上present新页面
true: 在传入的UINavigationController中push新页面
nativeFailMode String 唤端失败策略
h5: 应用内webview打开
download: 跳转下载页
none(默认值): 不做处理
schemeType String 唤端目标应用 taobao、tmall
backUrl String 唤端返回的 scheme
android 如果不传默认将不展示小把手,
ios 默认为 tbopen${appkey},不传也会展示小把手
degradeUrl String 自定义唤端失败降级页面
pid String 淘客ID
adzoneId String 设置该参数后pid会失效
subPid String subPid
unionId String unionId
extParams Object 淘客扩展参数
trackParams Object 自定义跟踪参数
options 返回参数
参数 类型 说明
status Boolean 状态
msg String 提示信息
data Object -

openItemDetail(Object options, Callback callback)

打开商品详情

options 参数说明
参数 类型 必填 说明
itemId String 商品ID

其他参数参考 openUrl 方法

openShop(Object options, Callback callback)

打开店铺

options 参数说明
参数 类型 必填 说明
shopId String 店铺ID

其他参数参考 openUrl 方法

openCart(Object options, Callback callback)

打开购物车

options 参数请参考 openUrl 方法

isTaobaoInstalled()

手机是否安装淘宝app

isTmallInstalled()

手机是否安装天猫app

咨询qq

987965424

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

[《淘宝用户授权协议》](https://terms.alicdn.com/legal-agreement/terms/suit_bu1_taobao/suit_bu1_taobao201805231731_83368.html)

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问