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
HBuilderX 4.17.2024051110-alpha 已修复。
更多关于uni-app ios 使用 plus.runtime.arguments获取参数是乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
相同问题,mui自定义基座怎么解决
11111
11111
1111
要看你怎么传过来的,这个也看不出来
回复 困难总比办法多: "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
回复 困难总比办法多: 这两种方式怎么使用啊 我没用过
回复 困难总比办法多: 好的 谢谢
1111
android 热启动通过微信公众号唤醒拿不到参数。有关注吗。。。。。。。。。。。。。。。。
在 uni-app 中使用 plus.runtime.arguments
获取参数时出现乱码,通常是由于编码问题导致的。以下是一些可能的解决方案:
1. 检查编码格式
确保传递的参数是 UTF-8 编码的。如果参数是通过 URL 传递的,请确保 URL 是正确编码的。
2. 手动解码
如果你确定参数是以某种编码格式传递的(例如 GBK),你可以尝试手动解码。例如,使用 decodeURIComponent
或 decodeURI
来解码 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);
}
});