支付寶小程序:Client SDK
小編:啊南 333閱讀 2020.12.28
初始化可以直接修改 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<AromeActivateResponse>() {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<AromeLoginResponse>() {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<AromeLogoutResponse>() {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<AromeLaunchAppResponse>() {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<AromeExitAppResponse>() {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<AromePreloadAppResponse>() {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 |
未找到小程序信息,無法預加載 |
Set<String> appIdSet = new HashSet();r// 填充 appIdSetrAromeBatchPreloadAppRequest request = new AromeBatchPreloadAppRequest();rrequest.appIds = appIdSet;rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback<AromePreloadAppResponse>() {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<AromeGetAppStatusResponse>() {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<AromeGetUserInfoResponse>() {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<String> extensionList = new ArrayList<>();rextensionList.add("helloAmpe");rextensionList.add("playMusic");rrequest.mExtensionList = extensionList;rAromeServiceInvoker.invoke(request, new AromeServiceTask.Callback<AromeResponse>() {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<AromeResponse>() {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) |
相關推薦
- 支付寶小程序:入駐開放平臺 支付寶小程序是一種全新的開放模式,它運行在支付寶客戶端,是手機應用嵌入支付寶客戶端的一種方法。支付寶小程序開放給開發者更多的 JSAPI 和 OpenAPI,也可以提供給用戶多樣化的便捷服務。支付寶小程序可以被便捷地獲取和傳播,從而為終端用戶提供更優的用戶…
- Qt加載XPM圖像 XPM是一種基于ASCII編碼的圖像格式,一般用于創建圖標。由于它是ASCII編碼,很方便地在代碼中使用。 Qt的QPixmap類支持XPM格式,原型如下:QPixmap::QPixmap(const char *const [] xpm)摘取Qt源碼中的"嚴重警告"XPM圖標:static const char* const c…