uni-app ios 使用 plus.runtime.arguments获取参数是乱码

uni-app ios 使用 plus.runtime.arguments获取参数是乱码

开发环境 版本号 项目创建方式
Mac 1 HBuilderX

操作步骤:

  • 正常操作

预期结果:

  • 不是乱码

实际结果:

  • 获取到的结果是乱码

bug描述:

使用 plus.runtime.arguments 唤起 app 时获取传递的参数,iOS 获取到的是乱码


使用 plus.runtime.arguments 唤起 app 时获取传递的参数,ios 获取到的是乱码
但是 app 在后台运行时被唤起,参数就能正常获取到不是乱码  
安卓手机正常

更多关于uni-app ios 使用 plus.runtime.arguments获取参数是乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

23 回复

HBuilderX 4.17.2024051110-alpha 已修复。

更多关于uni-app ios 使用 plus.runtime.arguments获取参数是乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html


相同问题,mui自定义基座怎么解决

要看你怎么传过来的,这个也看不出来

回复 困难总比办法多: "pagesA/wreCopyIssueDetails/wreCopyIssueDetails?id=339&type=postBar"就是这种

回复 困难总比办法多: 是的 就是在app.vue中的onshow中调用的,安卓没问题,苹果把app挂在后台上可以接收到参数,关闭重新拉起不能

回复 传播星球: 不是说ios获取的参数乱码吗,现在是关闭重新拉起获取不到吗,加个setTimeout后获取试一下

回复 困难总比办法多: 现在就加着setTimeout,ios接收到的参数就是乱码

回复 传播星球: 那说明你传过来的参数就有问题 没有转码,你直接传个写死的测试参数123,你看下获取的是不是乱码

回复 困难总比办法多: 转码我试过了不行,写死传也试过了,苹果获取到的都是乱码

回复 传播星球: 没遇到过,你这是什么场景 我做过uniapp app跳转支付宝 支付宝跳回获取支付宝授权的code,是能正常拿到plus.runtime.arguments 参数的

回复 困难总比办法多: 从微信浏览器通过<wx-open-launch-app>开放标签,打开app,使用plus.runtime.arguments 获取打开时传递的参数。这个问题前段时间还是正常的,今天一测试发现不正常了,之前也出现过这种问题,自己莫名其妙好了

回复 传播星球: https://ask.dcloud.net.cn/question/188488 那应该是你这种跳转方式到ios的某种限制,我看官方也没提如何处理,换其他跳转方式吧,1:scheme ,2:Universal Link

回复 困难总比办法多: 这两种方式怎么使用啊 我没用过

回复 困难总比办法多: 好的 谢谢

android 热启动通过微信公众号唤醒拿不到参数。有关注吗。。。。。。。。。。。。。。。。

在 uni-app 中使用 plus.runtime.arguments 获取参数时出现乱码,通常是由于编码问题导致的。以下是一些可能的解决方案:

1. 检查编码格式

确保传递的参数是 UTF-8 编码的。如果参数是通过 URL 传递的,请确保 URL 是正确编码的。

2. 手动解码

如果你确定参数是以某种编码格式传递的(例如 GBK),你可以尝试手动解码。例如,使用 decodeURIComponentdecodeURI 来解码 URL 参数。

let args = plus.runtime.arguments;
if (args) {
    args = decodeURIComponent(args);
    console.log(args);
}

3. 使用 Base64 编码

如果参数是通过 Base64 编码的,你可以使用 atob 函数来解码。

let args = plus.runtime.arguments;
if (args) {
    args = atob(args);
    console.log(args);
}

4. 检查传递方式

确保参数是通过正确的方式传递给应用的。例如,如果通过 URL Scheme 启动应用,确保 URL 是正确格式的。

5. 使用 plus.runtime.launchLoaded 事件

有时,plus.runtime.arguments 可能在某些情况下无法正确获取参数。你可以尝试使用 plus.runtime.launchLoaded 事件来获取启动参数。

document.addEventListener('plusready', function() {
    plus.runtime.launchLoaded = function(args) {
        console.log(args);
    };
});

6. 检查 Uni-App 版本

确保你使用的 Uni-App 版本是最新的,旧版本可能存在一些已知的 BUG。

7. 使用原生插件

如果以上方法都无法解决问题,你可以考虑使用原生插件来获取启动参数。

示例代码

以下是一个完整的示例代码,展示如何获取并解码启动参数:

document.addEventListener('plusready', function() {
    let args = plus.runtime.arguments;
    if (args) {
        args = decodeURIComponent(args);
        console.log(args);
    }
});
回到顶部