支付宝小程序:Client SDK

小编:啊南 1200阅读 2020.12.29

初始化

初始化可以直接修改 Application:

public class MainApplication extends AromeApplication {r    @Overrider    protected void attachBaseContext(Context context) {r        super.attachBaseContext(context);r        MultiDex.install(this);r    }r}

也可以自行选择时机调用

  1. 设置 application context:

AromeInit.attachApplicationContext(context);
  1. 服务初始化(后续 API 调用依赖于服务初始化完成,如果不提前初始化,则会在第一次 API 调用的时候进行初始化):

// 默认配置初始化rAromeInit.init();rr// 使用对应初始化参数rBundle themeConfig = new Bundle();rthemeConfig.putString("mode", "portrait");rthemeConfig.putString(InitOptionParams.THEME_CONFIG_BG_COLOR, "#FFFF00");rAromeInit.init(new AromeInitOptions.Builder()r                        .loginMode(1)r                        .hardwareType(0)r                        .hardwareName("AlipayCar")r               ttt.themeConfig(themeConfig)r                        .build());rr// 使用对应初始化参数,并需要完成回调rAromeInit.init(new AromeInitOptions.Builder()r                        .loginMode(1)r                        .hardwareType(0)r                        .hardwareName("AlipayCar")r               ttt.themeConfig(themeConfig)r                        .build(),r                new AromeInit.Callback() {r                    @Overrider                    public void postInit() {rttttttLog.d(TAG, "i am on mainthread");r                    }r                    r                    @Overrider                    public void serverDied() {r                        Log.d(TAG, "server process died! need re activate!");r                    }r                });
InitOptions 说明
  • loginMode

    • 0 手动登入登出

    • 1 悬浮球头像露出,用户可登出

    • 2 悬浮球倒计时露出,超时无操作自动登出

  • hardwareType

    • 1 小鹏汽车(车机竖屏小程序窗口)

    • 1001 天猫精灵(横屏小程序窗口)

  • hardwareName

    • 硬件名称,通过 getSystemInfo 的 device 字段透出,区别开移动端的 app 字段。让开发者有能力从硬件维度做适配兼容。

  • themeConfig

    • 主题参数配置,bundle类型,支持传参如下

参数名称

类型

作用

mode

String

设置主题模式,区分横屏/竖屏。可选值:"portrait"/"landscape"

可选值说明:"portrait":竖屏模式,用于竖屏硬件设备的主题模式

"landscape":横屏模式,用于横屏硬件设备的主题模式默认值为空,不会匹配任何主题模式,只显示小程序主体配置示例代码

themeConfig.putString("mode", "portrait");

InitOptionParams.THEME_CONFIG_BG_COLOR

String,16进制色值,如#FFFF00

面板主色A,见横屏模式图示

InitOptionParams.THEME_CONFIG_PANEL_BG_COLOR

String,16进制色值,如#FFFF00

面板辅色B,见横屏模式图示

InitOptionParams.THEME_CONFIG_TITLE_COLOR

String,16进制色值,如#FFFF00

标题色A,见横屏模式图示

InitOptionParams.THEME_CONFIG_SUB_TITLE_COLOR

String,16进制色值,如#FFFF00

辅助色C,见横屏模式图示

InitOptionParams.THEME_CONFIG_ACCENT_TITLE_COLOR

String,16进制色值,如#FFFF00

强调色B,见横屏模式图示

  • themeConfig 图示

    • 横屏模式

      image.pngimage.png

    • 竖屏模式

      image.png

API 说明

建议:API 不要在主线程调用,否则可能在服务未初始化完成前抛出异常。

如果必须要在主线程调用,务必保证调用前检查 AromeInit.isServiceOnline 返回 true。

1.1 激活
AromeActivateRequest request = new AromeActivateRequest();rrequest.hostAppId = "hostAppId#123";rrequest.productId = "productId#213";rrequest.deviceId = "deviceTest#2344";rrequest.signature = "signature#1r2334";rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeActivateResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:

参数

说明

productId

产品 ID

deviceId

设备 ID

signature

签名文件

hostAppId

移动应用 appid

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

错误码说明:

2001

服务端激活失败

2.1 登录
AromeLoginRequest request = new AromeLoginRequest();rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeLoginResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:暂无

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

2.2 登出
AromeLogoutRequest request = new AromeLogoutRequest();rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeLogoutResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:暂无

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

3.1 启动代码示例
AromeLaunchAppRequest request = new AromeLaunchAppRequest();rrequest.appId = miniAppId.getText().toString();rrequest.page = miniAppPage.getText().toString();rrequest.query = miniAppQuery.getText().toString();rBundle themeConfig = new Bundle();rthemeConfig.putInt(RequestParams.REQUEST_KEY_SHOW_TYPE, 123);rthemeConfig.putBoolean(RequestParams.REQUEST_KEY_SAVE_TO_RECENT, false);rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeLaunchAppResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});
请求参数

参数名称

类型

作用

appId

String

要启动的小程序appId(必选)

page

String

指定小程序页面(可选)

query

String

指定小程序query参数(可选)

launchWidth

int

小程序主体显示宽度(可选)

themeConfig

Bundle

主题配置参数(配合initOptions初始化时的themeConfig,具体子参数见下方参数定义)

closeAllApp

boolean

启动前是否关闭所有正在运行的小程序,默认false不关闭(可选)

themeConfig参数

参数名称

类型

作用

showType

int

  • 横屏模式,默认值 123

123:左中右三屏显示,包含最近列表+小程序主体+运营页

12:左+中,包含最近列表+小程序主体

23:中+右,包含小程序主体+运营页

2:中,只显示小程序主体

  • 竖屏模式,默认值 21

12:左+中,包含最近列表+小程序主体21:中+左, 包含小程序主体+最近列表

saveToRecent

boolean

launchApp启动的小程序是否保存到“最近使用”,默认值 true 保存到最近使用列表

themeConfig 效果图示
  • 横屏模式

showType=123

image.png

showType=23

image.png

showType=12

image.png

showType=2

image.png

  • 竖屏模式

showType=12

image.png

showType=21

image.png

结果参数

参数

说明

success

true / false

code

状态码

message

状态信息

3.2 退出
AromeExitAppRequest request = new AromeExitAppRequest();rrequest.appId = miniAppId.getText().toString();rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeExitAppResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:

参数

说明

appId

小程序 appid

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

错误码说明:

1050

未找到运行中的小程序

3.3 预加载
AromePreloadAppRequest request = new AromePreloadAppRequest();rrequest.appId = miniAppId.getText().toString();rrequest.loadToMemory = false;rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromePreloadAppResponse response) {r        mHandler.post(new Runnable() {r            @Overrider            public void run() {r                responseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:

参数

说明

appId

小程序 appid

loadToMemory

是否加载到内存

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

错误码说明:

1060

未找到小程序信息,无法预加载

3.4 批量预加载
Set appIdSet = new HashSet();r// 填充 appIdSetrAromeBatchPreloadAppRequest request = new AromeBatchPreloadAppRequest();rrequest.appIds = appIdSet;rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromePreloadAppResponse response) {r        mMainHandler.post(new Runnable() {r            @Overrider            public void run() {r                mResponseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:

参数

说明

appIds

包含所有预加载的小程序AppId Set,最多10个

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

错误码说明:

2

appIds内size为0,或者大于10?

3.5 小程序运行状态
AromeGetAppStatusRequest request = new AromeGetAppStatusRequest();rrequest.appId = miniAppId.getText().toString();rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeGetAppStatusResponse response) { r        mMainHandler.post(new Runnable() {r            @Override r            public void run() { r                responseTextView.setText(response.toString()); r            }r        }); r    }r});

请求参数:

参数

说明

appId

小程序 appid

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

isRunning

小程序是否正在运行 true/false

isForeground

小程序是否在前台 true/false

3.6 获取用户登录信息
AromeGetUserInfoRequest request = new AromeGetUserInfoRequest();rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeGetUserInfoResponse response) {r        mMainHandler.post(new Runnable() {r            @Overrider            public void run() {r                mResponseTextView.setText(response.toString());r            }r        });r    }r});

请求参数:

参数

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息,包含 isLogin, userName, userAvatar等信息

硬件能力扩展

允许小程序调用第三方 app 提供的硬件能力,如小程序播放车机提供的音乐能力;或设备发送通知给到小程序,如车机通知小程序当前电(油)量低。

1.1 注册能力

通过AromeExtendBridgeRequest注册需要扩展的能力。

请求参数:

参数

说明

extensionList

能力扩展列表

结果参数:

参数

说明

success

true / false

code

状态码

message

状态信息

例(扩展了 helloAmpe 和 playMusic 两个 API):

AromeExtendBridgeRequest request = new AromeExtendBridgeRequest();rArrayList extensionList = new ArrayList<>();rextensionList.add("helloAmpe");rextensionList.add("playMusic");rrequest.mExtensionList = extensionList;rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeResponse response) {r        mMainHandler.post(new Runnable() {r            @Overrider            public void run() {r                mResponseTextView.setText(response.toString());r            }r        });r    }r});
1.2 实现能力

实现注册的能力,当小程序调用对应能力时,会回调onCalled方法,并携带action即对应 API 名称与params即对应调用参数,只需要完成对应的扩展能力,并通过bridgeCallback参数回调即可,如果不需要额外参数回调给小程序可以直接传入null。

AromeServiceInvoker.registerBridgeExtension(new AromeServiceInvoker.BridgeExtension() {r    @Overrider    public void onCalled(String action, String params, AromeServiceInvoker.BridgeCallback bridgeCallback) {r        JSONObject result = new JSONObject();r        try {r            result.put("action", action);r            result.put("params", params);r            result.put("hello", "world");r        } catch (Throwable t) {r            Log.e("test", "onCalled", t);r        }r        String jsonString = result.toString();r        bridgeCallback.callback(jsonString);r    }r});
2.1 发送事件
AromeSendEventRequest sendEventRequest = new AromeSendEventRequest();rsendEventRequest.eventName = "niceToMeetYou";rsendEventRequest.eventData = "{"phonetype":"ABC","cat":"Android"}";rAromeServiceInvoker.invoke(sendEventRequest, new AromeServiceTask.Callback() {r    @Overrider    public void onCallback(final AromeResponse response) {r        mMainHandler.post(new Runnable() {r            @Overrider            public void run() {r                mResponseTextView.setText(response.toString());r            }r        });r    }r});
3.1 小程序调用能力

需要在注册实现的 API 名称前增加 "ampe_",来调用到真正实现的能力(如上例中的 helloAmpe ):

my.call('ampe_helloAmpe', {}, res => {r  console.log("result", res);r});
3.2 小程序监听事件
my.on('niceToMeetYou', e => {r  console.log("event", e);r})
通用状态码

码值

说明

0

成功

1

本地调用异常

2

本地校验失败

1000

远程调用异常

1001

invokeToken 失效,需要重新激活

1002

调用者身份非法

1003

参数非法

1004

处理超时(30s)

关联标签: