全部產品
Search
文件中心

Mobile Platform as a Service:啟動其他應用

更新時間:Apr 16, 2025

此介面用於跨包開啟 mPaaS 應用內的其他 H5 應用(離線包)。

startApp 介面的使用方法

AlipayJSBridge.call('startApp', {
  appId: '90000000',
  param: {
    url: '/index.html'
  }
}, function(result) {
  // noop
});

// 注意,如果要開啟多個 App 執行個體:
// 請將 appClearTop 和 startMultApp 都放在 param 裡
AlipayJSBridge.call('startApp', {
  appId: '90000000',
  param: {
    url: location.href,
    appClearTop: false,
    startMultApp: 'YES' // 注意這個值是 YES,而不是 bool 類型
  }
}, function(result) {
  // noop
});

程式碼範例

  • 開啟標題列透明的應用:

    <h1>點擊按鈕查看效果</h1>
    <a href="javascript:void(0)" class="btn dream">開啟心愿儲蓄</a>
    <script>
    function ready(callback) {
    // 如果 jsbridge 已經注入則直接調用
    if (window.AlipayJSBridge) {
      callback && callback();
    } else {
      // 如果沒有注入則監聽注入的事件
      document.addEventListener('AlipayJSBridgeReady', callback, false);
    }
    }
    ready(function(){
    document.querySelector('.dream').addEventListener('click', function() {
      AlipayJSBridge.call('startApp', {
        appId: '20000981',
        param: {
          url: '/www/dream-create.html',
          // 啟動參數傳入
          canPullDown: true,
          transparentTitle: 'auto'
        }
      }, function(result) {
        // noop
      });
    });
    });
    </script>
  • 開啟新應用並關閉當前應用:

    <h1>點擊按鈕開啟新應用,當前應用會被關閉</h1>
    <a href="javascript:void(0)" class="btn forest">開啟螞蟻森林</a>
    <script>
    function ready(callback) {
    // 如果 jsbridge 已經注入則直接調用
    if (window.AlipayJSBridge) {
      callback && callback();
    } else {
      // 如果沒有注入則監聽注入的事件
      document.addEventListener('AlipayJSBridgeReady', callback, false);
    }
    }
    ready(function() {
    document.querySelector('.forest').addEventListener('click', function() {
      AlipayJSBridge.call('startApp', {
          appId: '60000002',
          // 不傳入 URL,就會使用 App 預設配置的 URL
          param: {
            transparentTitle: 'auto'
          },
          closeCurrentApp: true
        }, function(result) {
          // noop
        });
    });
    });
    </script>
  • 預設只開一個 appId 執行個體:

    <h1>嘗試再開啟當前頁面,先退出當前應用,然後再次開啟</h1>
    <a href="javascript:void(0)" class="btn self">開啟當前頁面</a>
    <script>
    function ready(callback) {
    // 如果 jsbridge 已經注入則直接調用
    if (window.AlipayJSBridge) {
      callback && callback();
    } else {
      // 如果沒有注入則監聽注入的事件
      document.addEventListener('AlipayJSBridgeReady', callback, false);
    }
    }
    ready(function(){
    document.querySelector('.self').addEventListener('click', function() {
      AlipayJSBridge.call('startApp', {
        // 當前頁面開啟的時候,是通過跨平台 app 20000067 開啟,
        // 因此在此 startApp 的時候,就會把其他的 20000067 關閉
        // 所以這個時候其實還是只有一個當前頁面開啟
        appId: '20000067',
        param: {
          url: location.href,
        }
      }, function(result) {
        // noop
      });
    });
    });
    </script>
  • 開啟多個相同 appId 的應用:

    <h1>開啟多個相同 appId 的應用</h1>
    <a href="javascript:void(0)" class="btn multi">再開啟一個應用</a>
    <script>
    function ready(callback) {
    // 如果 jsbridge 已經注入則直接調用
    if (window.AlipayJSBridge) {
      callback && callback();
    } else {
      // 如果沒有注入則監聽注入的事件
      document.addEventListener('AlipayJSBridgeReady', callback, false);
    }
    }
    ready(function() {
    document.querySelector('.multi').addEventListener('click', function() {
      AlipayJSBridge.call('startApp', {
        appId: '90000000',
        param: {
          url: '/index.html',
          appClearTop: false,
          startMultApp: 'YES' // 注意這個值是 YES,而不是 bool 類型
        }
      }, function(result) {
        // noop
      });
    });
    });
    </script>

API 說明

AlipayJSBridge.call('startApp', {
  appId, param: {}, closeCurrentApp
}, fn)

入參

名稱

類型

描述

必選

預設值

基準

appId

string

離線包 ID。

Y

“”

-

param

dictionary

啟動應用的參數, 由具體業務應用定義。如開啟離線包時需指定 URL,請在 param 中配置。若要運行多個執行個體,參見下方 注意事項

N

value 值支援字元、 bool、int、double

-

closeCurrentApp

bool

是否先退出當前 App 再啟動新的 App。適用於頁面用作中轉頁的情況。

N

-

>10.1.60

fn

function

調用失敗後的回呼函數。

N

-

-

錯誤碼描述

錯誤碼

描述

10

指定 appId 無效。

11

啟動 App 失敗。

注意事項

  • startApp 是用來開啟 App 的,因此其定位是 App 層級,在這一點上與 pushWindow 不同。

  • 預設情況下,如果當前 App 已經開啟了,再次使用 startApp 開啟 App 時,會進行一個類似重啟的操作。也就是說不會出現同時運行兩個具有相同 appId 的執行個體的情況。

  • 假如一個 appId 要運行多個執行個體,那麼請在 param 參數中添加 appClearTop=false&startMultApp=YES 選項。