uni-app plus.runtime.arguments在ios中获取不到最新的参数 清空也无效 plus.runtime.launcher获取的一直是default

发布于 1周前 作者 phonegap100 来自 Uni-App

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)
},

2 回复

遇到一样的问题


在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中,你可以通过监听onLaunchonShow事件来获取启动参数。但是,由于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.argumentsplus.runtime.launcher的相关问题。

回到顶部