开发

小程序宿主能力接口实现指南

1 简介

小程序框架为宿主开放了一系列能力自定义实现接口, 采用pyramid框架(百度金字塔依赖注入框架)实现接口模块和实现模块间的 IoC 控制反转, 宿主按pyramid
框架规范实现小程序框架开放的相关接口,即可自定义实现对应的宿主能力。

2 自定义能力实现步骤

共分两步:

  1. 添加相关依赖项
  2. 实现对应接口,并添加 pyramid IoC 注解

下面以ISwanAppScanCode扫描二维码接口为例,介绍如何实现自定义小程序宿主能力。

1
2
3
4
5
6
7
8
package com.baidu.swan.apps.ioc.interfaces;

/** 扫码接口 */
public interface ISwanAppScanCode {

/** 扫码接口方法定义,调起客户端扫码界面,扫码成功后返回对应的结果 */
void scanCode(Context context, IScanResultCallback callback);
}

2.1 添加相关依赖

用于实现自定义小程序框架自定义能力接口的宿主实现模块的build.gradle文件添加如下依赖:

  • 添加 pyramid IoC 注解依赖项:deps.basic.pyramid.annotation
  • 添加接口定义所在模块的依赖项:此例中扫码接口ISwanAppScanCode定义在deps.business.swan.core 模块

宿主实现模块的build.gradle文件修改,示例如下:

1
2
3
4
dependencies {                                   // 在宿主实现模块的`build.gradle`文件中添加依赖
implementation deps.basic.pyramid.annotation // pyramid IoC 注解依赖项
implementation deps.business.swan.core // 扫码接口`ISwanAppScanCode`定义所在模块
}

2.2 实现对应接口,并添加 pyramid IoC 注解

在宿主实现模块中,新建目标接口的实现类,并按需添加 pyramid IoC 注解

假设宿主实现模块的扫码接口实现类名为SwanAppScanCodeImpl,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.baidu.swan.demo.openhost.impl.barcode;

import com.baidu.pyramid.annotation.Service;
import com.baidu.pyramid.annotation.Singleton;
import com.baidu.swan.apps.ioc.interfaces.ISwanAppScanCode;

/** 新建扫码能力实现类,继承自`ISwanAppScanCode`接口*/
@Service // 必要 pyramid IoC 注解,不加该注解时,依赖注入框架不会识别到该实现类
@Singleton // 可选 pyramid IoC 注解,加该注解表示要求依赖注入框架单例维护该实现类的对象,不加该注解则表示每次调用该接口时都会构造新的实现类对象
public class SwanAppScanCodeRuntime implements ISwanAppScanCode {

@Override
public void scanCode(Context context, final IScanResultCallback callback) {
// 实现扫码能力的接口方法
}
}