uni-app打包的ios端应用无法通过scheme打开微信/支付宝,android端应用可以,请问是什么问题导致?

发布于 1周前 作者 vueper 来自 uni-app

uni-app打包的ios端应用无法通过scheme打开微信/支付宝,android端应用可以,请问是什么问题导致?
uniapp打包的ios端应用无法通过scheme打开微信/支付宝,android端应用可以,有小伙伴帮忙看下是什么问题吗,谢谢~

图片

6 回复

alipay://没有s吧


有的,普通手机浏览器可以正常唤起。我在 ios 端微信和支付宝都跳不了,android 端没有问题

回复 sqb123: 应该是page参数出问题了吧

把?改为%3F pages/index/index%3Fmoney=123

回复 蔡cai: 微信的话好像用jssdk就好了吧

在uni-app中遇到iOS端应用无法通过scheme打开微信或支付宝,而Android端应用可以正常工作的问题,通常与iOS系统的应用间跳转机制有关。iOS对应用间的跳转有较为严格的限制,特别是当涉及到跳转到非系统自带应用(如微信、支付宝等)时。以下是一些可能的原因及对应的代码示例,帮助你排查和解决问题。

1. 检查URL Scheme是否正确

首先确保你使用的URL Scheme是正确的。对于微信和支付宝,它们的官方scheme分别是:

  • 微信:weixin://
  • 支付宝:alipay://alipayqr://(用于二维码)

示例代码

在uni-app中,你可以使用plus.runtime.openURL方法尝试打开这些应用:

function openApp(url) {
    plus.runtime.openURL(url, function(e) {
        if (e.code === 101) {
            console.error('App not installed');
        } else if (e.code === -2) {
            console.error('Invalid URL');
        } else {
            console.error('Failed to open app, error code: ' + e.code);
        }
    });
}

// 打开微信
openApp('weixin://dl/business/?t=xxxx');

// 打开支付宝
openApp('alipay://platformapi/startapp?appId=xxxx&method=xxxx');

2. iOS白名单配置

iOS 9及以上版本,需要在info.plist中添加LSApplicationQueriesSchemes数组,列出你希望跳转到的所有应用的scheme。例如:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
    <string>alipay</string>
    <string>alipayqr</string>
</array>

确保你的Xcode项目中的info.plist文件包含上述配置。

3. 权限与设置

  • 确保iOS设备的“设置”->“Safari”->“请求桌面网站”未开启,因为某些URL在桌面模式下可能无法正确跳转。
  • 检查iOS设备的隐私设置,确保没有阻止应用间的跳转。

4. 调试与日志

  • 使用Xcode运行应用,并在控制台查看输出日志,寻找可能的错误信息。
  • 确保iOS设备已连接到Xcode,以便进行实时调试。

通过上述步骤,你应该能够定位到问题的具体原因。如果问题仍然存在,建议查阅最新的uni-app文档或iOS开发者文档,了解是否有新的限制或变更影响了应用间的跳转。

回到顶部