全部产品
云市场

启动其他应用

更新时间:2020-04-13 16:44:39

此接口用于跨包打开 mPaaS 应用内的其他 H5 应用(离线包)。

startApp 接口的使用方法

  1. AlipayJSBridge.call('startApp', {
  2. appId: '90000000',
  3. param: {
  4. url: '/index.html'
  5. }
  6. }, function(result) {
  7. // noop
  8. });
  9. // 注意,如果要打开多个 App 实例:
  10. // 请将 appClearTop 和 startMultApp 都放在 param 里
  11. AlipayJSBridge.call('startApp', {
  12. appId: '90000000',
  13. param: {
  14. url: location.href,
  15. appClearTop: false,
  16. startMultApp: 'YES' // 注意这个值是 YES,而不是 bool 类型
  17. }
  18. }, function(result) {
  19. // noop
  20. });

代码示例

  • 打开标题栏透明的应用:

    1. <h1>点击按钮查看效果</h1>
    2. <a href="javascript:void(0)" class="btn dream">打开心愿储蓄</a>
    3. <script>
    4. function ready(callback) {
    5. // 如果 jsbridge 已经注入则直接调用
    6. if (window.AlipayJSBridge) {
    7. callback && callback();
    8. } else {
    9. // 如果没有注入则监听注入的事件
    10. document.addEventListener('AlipayJSBridgeReady', callback, false);
    11. }
    12. }
    13. ready(function(){
    14. document.querySelector('.dream').addEventListener('click', function() {
    15. AlipayJSBridge.call('startApp', {
    16. appId: '20000981',
    17. param: {
    18. url: '/www/dream-create.html',
    19. // 启动参数传入
    20. canPullDown: true,
    21. transparentTitle: 'auto'
    22. }
    23. }, function(result) {
    24. // noop
    25. });
    26. });
    27. });
    28. </script>
  • 打开新应用并关闭当前应用:

    1. <h1>点击按钮打开新应用,当前应用会被关闭</h1>
    2. <a href="javascript:void(0)" class="btn forest">打开蚂蚁森林</a>
    3. <script>
    4. function ready(callback) {
    5. // 如果 jsbridge 已经注入则直接调用
    6. if (window.AlipayJSBridge) {
    7. callback && callback();
    8. } else {
    9. // 如果没有注入则监听注入的事件
    10. document.addEventListener('AlipayJSBridgeReady', callback, false);
    11. }
    12. }
    13. ready(function() {
    14. document.querySelector('.forest').addEventListener('click', function() {
    15. AlipayJSBridge.call('startApp', {
    16. appId: '60000002',
    17. // 不传入 URL,就会使用 App 默认配置的 URL
    18. param: {
    19. transparentTitle: 'auto'
    20. },
    21. closeCurrentApp: true
    22. }, function(result) {
    23. // noop
    24. });
    25. });
    26. });
    27. </script>
  • 默认只开一个 appId 实例:

    1. <h1>尝试再打开当前页面,先退出当前应用,然后再次打开</h1>
    2. <a href="javascript:void(0)" class="btn self">打开当前页面</a>
    3. <script>
    4. function ready(callback) {
    5. // 如果 jsbridge 已经注入则直接调用
    6. if (window.AlipayJSBridge) {
    7. callback && callback();
    8. } else {
    9. // 如果没有注入则监听注入的事件
    10. document.addEventListener('AlipayJSBridgeReady', callback, false);
    11. }
    12. }
    13. ready(function(){
    14. document.querySelector('.self').addEventListener('click', function() {
    15. AlipayJSBridge.call('startApp', {
    16. // 当前页面打开的时候,是通过通用应用 20000067 打开,
    17. // 因此在此 startApp 的时候,就会把其他的 20000067 关闭
    18. // 所以这个时候其实还是只有一个当前页面打开
    19. appId: '20000067',
    20. param: {
    21. url: location.href,
    22. }
    23. }, function(result) {
    24. // noop
    25. });
    26. });
    27. });
    28. </script>
  • 同一个 appId 多开:

    1. <h1>打开多个相同 appId 的应用</h1>
    2. <a href="javascript:void(0)" class="btn multi">再开启一个应用</a>
    3. <script>
    4. function ready(callback) {
    5. // 如果 jsbridge 已经注入则直接调用
    6. if (window.AlipayJSBridge) {
    7. callback && callback();
    8. } else {
    9. // 如果没有注入则监听注入的事件
    10. document.addEventListener('AlipayJSBridgeReady', callback, false);
    11. }
    12. }
    13. ready(function() {
    14. document.querySelector('.multi').addEventListener('click', function() {
    15. AlipayJSBridge.call('startApp', {
    16. appId: '90000000',
    17. param: {
    18. url: '/index.html',
    19. appClearTop: false,
    20. startMultApp: 'YES' // 注意这个值是 YES,而不是 bool 类型
    21. }
    22. }, function(result) {
    23. // noop
    24. });
    25. });
    26. });
    27. </script>

API

  1. AlipayJSBridge.call('startApp', {
  2. appId, param: {}, closeCurrentApp
  3. }, 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 选项。