百川SDK-HarmonyOS接入文档

更新时间:2024/08/23 访问次数:2068

名称

下载地址

使用说明

鸿蒙版百川SDK

下载地址

需要DevEco Studio 5.0.3.700及以上版本

手淘测试包

下载地址

需使用鸿蒙unlock机器安装

1. 回归产物HAP、HSP均要下载至电脑本地

2. 非覆盖安装,需要先卸载,再安装HSP、HAP:

hdc install hsp路径

hdc install hap路径

鸿蒙百川接入Demo

下载地址

需在工程中,放入申请好的安全图片,把lib目录下替换为最新的鸿蒙百川SDK,按SDK接入步骤替换appKey等配置

一.平台申请

创建应用

登录https://console.baichuan.taobao.com/applications.htm进行应用创建,使用iOS应用创建流程,Bundle ID填写鸿蒙应用Bundle Name。详细创建流程可参考文档 https://baichuan.taobao.com/docs/doc.htm?treeId=129&articleId=118101&docType=1

安全图片下载

登录https://suite.baichuan.taobao.com/#/sdk ,选择刚刚创建的应用,进行鸿蒙版安全图片下载,选择v6版本安全图片,文件名为yw_1222.jpg。

AppKey加白

将申请好的appKey提供给百川官方小二,走加白流程,加白后SDK可以正常调用。

加白提交方式可参考对外公告:https://qn.taobao.com/headline/news/10713252?spm=a211vu.12026430.0.0.b46b3929iVukWe

二.SDK接入步骤

鸿蒙版百川依赖使用集成态hsp对外提供,接入前请先确认接入步骤前两点

1. 环境要求

  • IDE: DevEco Studio 5.0.3.700

  • SDK: API version 12

  • 鸿蒙真机系统版本:NEXT.0.0.31以上

2. 使用限制

  • 只支持Stage模型。

  • 需要在API12及以上版本使用,并且使用标准化的OHMUrl格式

3. 具体步骤

a. 将申请好的鸿蒙版安全图片,命名为yw_1222.jpg, 放在工程resources目录media下

b. 将百川打包好的hsp产物放入lib目录下

c. 在工程级的目录下build-profile.json5添加下列配置

d. 在工程的entry模块下的oh-package.json5配置文件中添加依赖

e. 在工程的entry模块下的module.json5配置授权回端的scheme及拉端需要的scheme, 授权回端配置名称taobaooauth+appkey

{
  "module": {
    ...
    "abilities": [
      {
       ...
        "skills": [
          {
            ...
            "uris": [
              {
                "scheme": "taobaooauth{替换为自身的appKey}"
              }
            ]
          }
        ]
      }],
    "querySchemes": [
      "tbopen",
      "tbaccount34692017"
    ]
  }
}

f. 使用ohpm install安装依赖,在自己工程中调用百川初始化后使用其他接口,具体参考下方接口说明部分

三.接口说明

1.init (在使用其他接口之前初始化)

  • 入参AlibcInitOption

/**
 @param context     // 上下文对象
 @param onSuccess   // 成功回调
 @param onFailure   // 失败回调
 */
export interface AlibcInitOption {
  context: Context;
  onSuccess?: () => void
  onFailure?: (code: number, msg: string) => void
}

  • 调用示例:

Alibc.init({
  context: this.context,
  onSuccess: () => {
    hilog.info(0xF101, 'EntryAbility', 'Alibc init success');
  },
  onFailure: (code, msg) => {
    hilog.info(0xF101, 'EntryAbility', 'Alibc init fail code: %{public}d, msg: %{public}s', code, msg);
  }
})

2.openByUrl (跳转链接)

  • 入参AlibcOpenByUrlOption

/**
 @param url                     // 跳转的url,必传参数
 @param onSuccess               // 成功回调
 @param onFailure               // 失败回调
 @param showParams              // 显示参数
 @param taokeParams             // 淘客参数
 @param trackParams             // 跟踪参数
 @param needBaichuanLinkConvert // 是否需要百川SDK使用taokeParams对传入链接执行转链,默认不需要
 */
export interface AlibcOpenByUrlOption {
  url: string;
  onSuccess?: (code: number, msg: string) => void;
  onFailure?: (code: number, msg: string) => void;
  showParams?: AlibcShowParams;
  taokeParams?: AlibcTaokeParams;
  trackParams?: Map<string, string>;
  needBaichuanLinkConvert?: boolean;
}

  • 调用示例

let url = 'https://s.click.taobao.com/t?e=m%3D2%26s%3D1DANZtzHz7tw4vFB6t2Z2ueEDrYVVa64XoO8tOebS%2BfLWlSKdGSYDkgknI00BwY1MMgx22UI05ZGtvS2t8YXqql3YCacbAJGs0x9Gq7vDdqeKYIajGjChTpRpDJK%2FklF1RoBZXScntTUEheyLYMGXiU3eodff7ogotYzDcQ4SzIWZKt7NvIcGa1FXqxF%2F3mtXyerTiacefDX6KAEhsqp0hkfaIiVwydT67NJ05nbfGYzgmkCpJbUi2RBwUWWyHogzQ5pNhyIxpdNzuMLUNyvdNqIL1Eu%2F%2FLDsMlV1JGOt%2FN%2FQXu2D%2BXFgcKyIHBZkBMC&relationId=&skuId=5593778439447&union_lens=lensId%3ATAPI%401716084058%40212aafd5_111a_18f8e94aab4_162e%4001&ttid=2014_0_23022129@baichuan_android_5.0.2.1'
let showParams: AlibcShowParams = {clientType: 'taobao'}
let taokeParams: AlibcTaokeParams = {pid: "mm_26381042_107400144_109668650092"}
let needBaichuanLinkConvert = false;
Alibc.openByUrl({
  url,
  onSuccess: (code, msg) => {
    hilog.info(0xF101, 'Index', 'openByUrl成功回调 code: %{public}d, msg: %{public}s', code, msg)
  },
  onFailure: (code, msg) => {
    hilog.info(0xF101, 'Index', 'openByUrl失败回调 code: %{public}d, msg: %{public}s', code, msg)
  },
  showParams, taokeParams, needBaichuanLinkConvert})
})

3.login (登录)

  • 需要在EntryAbility中添加下列回调

onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    Alibc.onNewWant(want);
  }

  • 入参AlibcLoginOption

/**
 @param onSuccess   // 成功回调
 @param onFailure   // 失败回调
 */
export interface AlibcLoginOption {
  onSuccess?: (user?: AlibcLoginUser) => void
  onFailure?: (code: string, msg: string) => void
}

  • 调用示例

Alibc.login({
  onSuccess: (user) => {
    hilog.info(0xF101, 'Index', 'showLogin success user openId %{public}s', user?.openId);
  },
  onFailure: (code, msg) => {
    hilog.info(0xF101, 'Index', 'showLogin onFail code: %{public}s, msg: %{public}s', code, msg);
  }
})

4.logout (登出)

  • 入参AlibcLogoutOption

/**
 @param onComplete  // 登出完成回调
 */
export interface AlibcLogoutOption {
  onComplete?: () => void;
}

  • 调用示例

Alibc.logout({
  onComplete: () => {
    hilog.info(0xF101, 'Index', 'logout');
  }
});

5.authorize (top授权)

  • 需要先调用setAuthorizeWindowStage

/**
   * 调用 authorize 方法前必须调用,否则会导致无法弹出授权浮层
   * 设置授权浮层弹出的 windowStage,可在宿主APP的 EntryAbility onWindowStageCreate 回调中调用
   * @param windowStage
   */
onWindowStageCreate(windowStage: window.WindowStage) {
    Alibc.setAuthorizeWindowStage(windowStage);
}

  • 入参AlibcLoginOption

/**
 @param appName          // 用于top授权时展示应用名称
 @param appLogoSrc       // 用于top授权时展示应用图标
 @param appKey           // 业务方appkey
 @param onSuccess        // 成功回调
 @param onFailure        // 失败回调
 */
export interface AlibcAuthOption {
  appName: string;
  appLogoSrc: Resource;
  appKey: string;
  onSuccess?: (params: AlibcAuthOnSuccessParams) => void;
  onFailure?: (code: string, msg: string) => void;
}

  • 调用示例

Alibc.authorize({
  appName: '测试应用',
  appLogoSrc: $r('app.media.icon'),
  appKey: Alibc.getAppKey(),
  onSuccess: (params) => {
      hilog.info(0xF101, 'Index', 'topAuth success accessToken: %{public}s, expireTime: %{public}s',
        params.accessToken, params.expireTime);
    },
    onFailure: (code, msg) => {
      hilog.info(0xF101, 'Index', 'topAuth fail code: %{public}d, msg: %{public}s', code, msg);
    }
});

6.getAppKey (从安全图片中获取appkey)

  • 调用示例

let appKey = Alibc.getAppKey()

四.常见问题

1.错误码排查

  • 初始化回调错误码:

export class AlibcInitCode {
  static readonly SECURITY_INIT_FAIL = 1000 // 安全保镖初始化失败
  static readonly MTOP_INIT_FAIL = 2000     // MTOP初始化失败
  static readonly UT_INIT_FAIL = 3000       // UT初始化失败
  static readonly LOGIN_INIT_FAIL = 4000    // 登录sdk初始化失败
}

  • openByUrl错误码:

export const SDK_NOT_INIT_CODE = 1000
export const SDK_NOT_INIT_MSG = 'SDK没有初始化'

export const NOT_SUPPORT_MINIAPP_CODE = 1300
export const NOT_SUPPORT_MINIAPP_MSG = '不支持小程序链接'

export const LAUNCH_SUCCESS_CODE = 2000
export const LAUNCH_SUCCESS_MSG = '唤端成功'

export const LAUNCH_NOT_SUPPORT_CLIENT_CODE = 2100
export const LAUNCH_NOT_SUPPORT_CLIENT_MSG = '不支持的唤端类型'

export const LAUNCH_FAIL_CODE = 2200
export const LAUNCH_FAIL_MSG = '唤端失败,异常crash'

export const LAUNCH_LACK_QUERY_SCHEMES_CODE = 2300
export const LAUNCH_LACK_QUERY_SCHEMES_MSG = '未配置目标scheme'

export const LAUNCH_LINK_FAIL_CODE = 2400
export const LAUNCH_LINK_FAIL_MSG = '未找到目标app'

  • top授权错误码

export const AUTH_NOT_INIT = 'AUTH_NOT_INIT';  //在onWindowStageCreate中先调用setAuthorizeWindowStage接口

export const AUTH_UI_ERROR = 'AUTH_UI_ERROR';  //系统createSubWindow创建失败

export const AUTH_NETWORK_ERROR = 'AUTH_NETWORK_ERROR';  //接口请求失败,检查appkey

export const AUTH_USER_CANCEL = 'AUTH_USER_CANCEL';  // 用户取消授权

export const AUTH_FREQUENCY_LIMIT = 'AUTH_FREQUENCY_LIMIT'  //授权频次过高,时间间隔需大于1秒

FAQ

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