uni-app 【已解决】wap2app 打开其他应用IOS端失败

uni-app 【已解决】wap2app 打开其他应用IOS端失败

开发环境 版本号 项目创建方式
HBuilderX Alpha 3.1.15.20210518-alpha -

示例代码:

标准基座 真机调试

iPhone XR ios 14

试过的方法如下:

已经在 document.addEventListener('plusready', () => {}) 里面的,这点不用质疑。

提示:

唤起失败{"code":-3,"message":"此功能不支持"}

无效

if(plus.os.name =='iOS'){  
   plus.runtime.launchApplication({action: "snssdk1128://"}, function(e) {  
    console.log('唤起失败'+JSON.stringify(e))  
   })  
}

无效

if(plus.os.name =='iOS'){  
  plus.runtime.openURL( "snssdk1128://", function(res) {    
      console.log(SON.stringify(res));    
 });  
}

无效

  location.href = "snssdk1128://";
  window.location.href = "snssdk1128://";
  window.open("snssdk1128://", "_self");

然后在M站中的 a 标签上直接 href 也还是不行。

<a href="//ask.dcloud.net.cn/snssdk1128://">打开抖音</a>

如果是在 手机 Safari 浏览器 地址栏输入 snssdk1128:// 正常打开抖音,浏览器点击页面的 <a href="//ask.dcloud.net.cn/snssdk1128://">打开抖音</a> 也能够唤起 抖音。或者 用 window.location.href = "snssdk1128://"; 也能打开抖音,

反正在安卓端和浏览器都正常, wap2app 任何方式都不无效的,不知道是IOS问题还是 wap2app问题。麻烦技术测试一下。

操作步骤:

都写了

预期结果:

唤起抖音

实际结果:

唤起无效

bug描述:

在安卓端 无论是 用 plus.runtime.launchApplication 还是 location.href 都能正常的唤起 抖音应用,但是在IOS端 无论是用那种办法都是不行,


更多关于uni-app 【已解决】wap2app 打开其他应用IOS端失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

manifest.json–app其他常用配置–应用白名单—添加下 snssdk1128 然后打包,再试试这几种方法

更多关于uni-app 【已解决】wap2app 打开其他应用IOS端失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


感谢,已经可以可!!

回复 大图APP: 改下标题吧!所以遇到问题先冷静,未必就是bug

这个问题是iOS系统对WAP2APP应用内调用第三方应用URL Scheme的限制导致的。在iOS的WebView环境中,直接通过JavaScript调用URL Scheme会受到更严格的安全限制。

解决方案:

  1. 使用plus.runtime.openURL方法,但需要确保URL格式正确:
plus.runtime.openURL("snssdk1128://", function(e){
    console.log('唤起结果:', JSON.stringify(e));
    if(e.code){
        // 唤起失败后跳转AppStore
        plus.runtime.openURL("https://apps.apple.com/cn/app/id1142110895");
    }
});
  1. 如果是iOS 9+系统,可以尝试使用Universal Links代替URL Scheme:
plus.runtime.openURL("https://www.douyin.com/share/user/...");
  1. 确保在manifest.json中配置了白名单:
"plus": {
    "whitelist": {
        "scheme": ["snssdk1128"]
    }
}
  1. 如果以上方法都不行,可以考虑使用中间页跳转方案:
window.location.href = "https://yourdomain.com/redirect?target=snssdk1128://";
回到顶部