uni-app plus.runtime.arguments在ios中获取不到最新的参数 清空也无效 plus.runtime.launcher获取的一直是default
uni-app plus.runtime.arguments在ios中获取不到最新的参数 清空也无效 plus.runtime.launcher获取的一直是default
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 10.15.7 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:4.36
手机系统:iOS
手机系统版本号:iOS 17
手机厂商:苹果
手机机型:iphone 15
页面类型:vue
vue版本:vue2
打包方式:云端
操作步骤:
onShow: function() {
console.log('App Show')
uni.setKeepScreenOn({
keepScreenOn: true
})
plus.runtime.setBadgeNumber(0);
setTimeout(function() {
console.log("plus.runtime.arguments》》》》》》》》》》》》》》》》》》》》》》", plus.runtime.arguments)
console.log("plus.runtime.launcher", plus.runtime.launcher)
}, 200)
},
onHide: function() {
console.log('App Hide')
plus.runtime.arguments = null
console.log("清空成功")
console.log("cData>>》》》》》》》》》》》》》》》》》》》》》》", plus.runtime.arguments)
},
遇到一样的问题
在uni-app开发中,如果你遇到在iOS平台上plus.runtime.arguments
无法获取到最新参数,并且清空无效,同时plus.runtime.launcher
总是返回default
的问题,这可能是由于iOS系统对应用启动参数和启动源的管理机制导致的。以下是一些可能的解决方案和相关代码示例,帮助你更好地处理这些问题。
1. 确保参数传递正确
首先,确保你在传递参数时使用了正确的方法。例如,如果你是通过URL Scheme启动应用并传递参数,确保URL的格式正确,并且参数部分已经正确编码。
// 假设你有一个URL Scheme为`myapp://`,并且你想传递参数`param1=value1`
const url = 'myapp://?param1=value1';
// 在iOS设备上,你可以通过Safari等浏览器打开这个URL来启动应用并传递参数
2. 监听应用启动事件
在uni-app中,你可以通过监听onLaunch
或onShow
事件来获取启动参数。但是,由于iOS的限制,你可能需要在原生层面做一些处理来确保参数能够正确传递和更新。
export default {
onLaunch: function (options) {
// 尝试从plus.runtime.arguments获取参数
const args = plus.runtime.arguments;
console.log('Launch arguments:', args);
// 如果args为空或不是最新的,你可能需要在原生代码中做进一步处理
},
onShow: function () {
// 类似地,你也可以在onShow中尝试获取参数
const args = plus.runtime.arguments;
console.log('Show arguments:', args);
}
}
3. 原生代码处理
对于iOS平台,你可能需要在原生代码中处理URL Scheme的解析和参数的传递。这通常涉及到修改Xcode项目中的AppDelegate文件,以捕获URL并传递参数给uni-app。
以下是一个简化的示例,展示了如何在iOS原生代码中处理URL Scheme并传递参数:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
// 解析URL并提取参数
NSDictionary *components = [NSURLComponents componentsWithString:url.absoluteString];
NSArray *queryItems = components.queryItems;
// 将参数传递给uni-app(这里需要根据你的具体实现来调整)
// 例如,你可以将参数存储在一个全局变量中,然后在uni-app中读取这个变量
return YES;
}
4. 注意事项
- 确保你的应用已经正确配置了URL Scheme,并且已经在iOS的
Info.plist
中注册。 - 由于iOS的安全策略,某些情况下应用可能无法直接从URL Scheme中获取敏感信息。
- 如果你的应用被其他应用以非URL Scheme的方式启动(如通过分享扩展),
plus.runtime.launcher
可能会返回default
。
通过上述方法,你应该能够更好地处理iOS平台上plus.runtime.arguments
和plus.runtime.launcher
的相关问题。