uniapp如何唤起app或跳转至指定应用

在uniapp开发中,如何实现唤起其他APP的功能?比如需要从自己的应用跳转到微信、支付宝等指定应用,或者判断用户是否安装了目标应用。请问具体应该调用哪些API?iOS和Android的实现方式是否有差异?能否提供完整的代码示例和注意事项?

2 回复

uniapp可通过scheme协议唤起其他App。常用方法:

  1. 使用plus.runtime.launchApplication()直接启动
  2. 使用location.href跳转URL Scheme
  3. 使用uni.navigateToMiniProgram跳转小程序

需要目标App提供有效的scheme地址,如:weixin://。注意部分平台需配置白名单。


在 UniApp 中,唤起其他应用或跳转到指定应用主要通过 URL SchemeUniversal Link(iOS) 实现。以下是具体方法和代码示例:

1. 使用 URL Scheme 唤起应用

URL Scheme 是一种协议,允许应用通过特定链接被唤起。例如,微信的 Scheme 是 weixin://

实现步骤:

  1. 获取目标应用的 Scheme
    需要知道目标应用的 URL Scheme(如微信:weixin://,支付宝:alipay://)。部分应用的 Scheme 可查询官方文档。

  2. 在 UniApp 中调用 Scheme
    使用 uni.navigateTouni.redirectToplus.runtime.launchApplication(需 5+ App 环境)。

代码示例:

// 方法1:使用 uni.navigateTo(适用于已知 Scheme)
uni.navigateTo({
  url: 'weixin://', // 替换为目标应用的 Scheme
  fail: (err) => {
    console.log('唤起失败,可能未安装应用', err);
    // 可跳转到下载页或提示用户
    uni.showToast({ title: '未安装应用', icon: 'none' });
  }
});

// 方法2:使用 5+ API(需在 App 端运行)
if (plus.runtime.isApplicationExist({ pname: 'com.tencent.mm' })) { // 检查应用是否安装
  plus.runtime.launchApplication({ action: 'weixin://' }, (e) => {
    console.log('唤起成功');
  });
} else {
  uni.showToast({ title: '未安装微信', icon: 'none' });
}

2. 跳转到应用商店

如果未安装应用,可引导用户跳转到应用商店下载。

代码示例:

// 跳转到 App Store(iOS)或应用市场(Android)
const openStore = () => {
  // iOS 跳转到 App Store
  if (uni.getSystemInfoSync().platform === 'ios') {
    plus.runtime.openURL('https://apps.apple.com/cn/app/微信/id414478124'); // 替换为应用商店链接
  } 
  // Android 跳转到应用市场
  else {
    plus.runtime.openURL('market://details?id=com.tencent.mm'); // 使用 market Scheme
  }
};

3. 使用 Universal Link(iOS)

Universal Link 是 iOS 提供的深层链接,可直接跳转到应用特定页面(需配置关联域名)。

代码示例:

// 直接打开 Universal Link
uni.navigateTo({
  url: 'https://example.com/app-path', // 替换为配置的 Universal Link
});

注意事项:

  • 权限问题:部分 Android 设备需手动授权“打开其他应用”的权限。
  • Scheme 限制:iOS 9 以上需在 info.plist 中配置 LSApplicationQueriesSchemes 白名单。
  • 兼容性:测试不同设备和系统版本,确保 Scheme 有效。

通过以上方法,即可在 UniApp 中实现唤起其他应用或跳转功能。

回到顶部