支付宝小程序: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}
也可以自行选择时机调用
-
设置 application context:
AromeInit.attachApplicationContext(context);
-
服务初始化(后续 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 图示
-
横屏模式
-
竖屏模式
-
建议: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 |
服务端激活失败 |
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 |
状态信息 |
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 |
状态信息 |
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不关闭(可选) |
参数名称 |
类型 |
作用 |
showType |
int |
123:左中右三屏显示,包含最近列表+小程序主体+运营页 12:左+中,包含最近列表+小程序主体 23:中+右,包含小程序主体+运营页 2:中,只显示小程序主体
12:左+中,包含最近列表+小程序主体21:中+左, 包含小程序主体+最近列表 |
saveToRecent |
boolean |
launchApp启动的小程序是否保存到“最近使用”,默认值 true 保存到最近使用列表 |
-
横屏模式
showType=123
showType=23
showType=12
showType=2
-
竖屏模式
showType=12
showType=21
结果参数
参数 |
说明 |
success |
true / false |
code |
状态码 |
message |
状态信息 |
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 |
未找到运行中的小程序 |
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 |
未找到小程序信息,无法预加载 |
SetappIdSet = 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? |
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 |
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();rArrayList1.2 实现能力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});
实现注册的能力,当小程序调用对应能力时,会回调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.Callback3.1 小程序调用能力() {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});
需要在注册实现的 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) |
相关推荐