uni-app plus.runtime.openUrl() IOS APP 无法拉起支付宝小程序

uni-app plus.runtime.openUrl() IOS APP 无法拉起支付宝小程序

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 MAC
HBuilderX类型 正式
HBuilderX版本 4.13
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 iPhone X
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

authUrl = `alipay://platformapi/startapp?appId=2021004100669981`;
let params = encodeURIComponent(
'?id=' + that.optid + '&tourl=' + that.tourl + '&apppay=1' + '&orderid=' + that.opt.orderid + '&apptoken=' + app.globalData.cashierToken
authUrl = `${authUrl}&page=pages/pay/pay${params}`;
console.log(authUrl)
plus.runtime.openURL(authUrl, function(res){
}
)

操作步骤:

拉起支付宝支付

预期结果:

打开支付宝跳到指定的小程序页面

实际结果:

无法打开支付宝APP

bug描述:

plus.runtime.openUrl() IOS APP 无法拉起支付宝小程序,白名单也配置了,方法依然无效


更多关于uni-app plus.runtime.openUrl() IOS APP 无法拉起支付宝小程序的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请问下解决了吗,我这边也遇到了

更多关于uni-app plus.runtime.openUrl() IOS APP 无法拉起支付宝小程序的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中,使用 plus.runtime.openUrl() 方法在 iOS 设备上无法拉起支付宝小程序,可能是由于以下几个原因:

1. URL Scheme 问题

  • 支付宝小程序的 URL Scheme 可能需要特定的格式。确保你使用的 URL Scheme 是正确的,并且符合支付宝的要求。
  • 例如,支付宝小程序的 URL Scheme 通常类似于 alipays://platformapi/startapp?appId=yourAppId,其中 yourAppId 是你小程序的 App ID。

2. iOS 限制

  • iOS 对于 URL Scheme 调用有一定的限制,特别是在 iOS 13 及以上版本中,苹果对 URL Scheme 的调用更加严格。如果你在 iOS 13 及以上版本中遇到问题,可能是因为 iOS 限制了直接通过 URL Scheme 调用第三方应用。

3. 白名单配置

  • 在 iOS 中,如果你要通过 plus.runtime.openUrl() 调用支付宝,需要在 info.plist 文件中配置白名单。你需要在 LSApplicationQueriesSchemes 中添加 alipays,以便允许应用调用支付宝。
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>alipays</string>
</array>

4. 支付宝 SDK 集成

  • 如果你需要更复杂的交互(例如支付、登录等),可能需要集成支付宝的 SDK,而不是仅仅使用 URL Scheme。支付宝提供了官方的 SDK,你可以通过 uni-app 的插件机制来集成。

5. 检查支付宝是否安装

  • 在调用 plus.runtime.openUrl() 之前,你可以先检查支付宝是否已安装在设备上。如果未安装,可以提示用户安装支付宝。
plus.runtime.isApplicationExist({pname:'com.alipay.iphoneclient'}, function(e){
    if(e.exist){
        plus.runtime.openURL('alipays://platformapi/startapp?appId=yourAppId');
    } else {
        // 提示用户安装支付宝
    }
});

6. 调试与日志

  • 使用 console.loguni.showToast 输出调试信息,确保代码执行到了 plus.runtime.openUrl() 方法,并且传递的 URL 是正确的。
  • 你可以在 Safari 的开发者工具中查看是否有错误日志,或者使用 Xcode 查看应用日志。

7. 支付宝小程序的 Universal Link

  • 如果 URL Scheme 无法正常工作,可以尝试使用支付宝的 Universal Link。Universal Link 是 iOS 提供的一种更安全的方式来打开应用内特定内容。

8. 权限问题

  • 确保你的应用有足够的权限来调用第三方应用。iOS 可能会在某些情况下阻止应用的 URL Scheme 调用。

9. 支付宝小程序的兼容性

  • 确保你使用的支付宝小程序功能在当前版本的支付宝客户端中是支持的。某些功能可能需要在最新版本的支付宝客户端中才能正常使用。

示例代码

function openAlipayMiniProgram() {
    plus.runtime.isApplicationExist({pname:'com.alipay.iphoneclient'}, function(e){
        if(e.exist){
            plus.runtime.openURL('alipays://platformapi/startapp?appId=yourAppId');
        } else {
            uni.showToast({
                title: '请先安装支付宝',
                icon: 'none'
            });
        }
    });
}
回到顶部