uni-app中ios从微信分享页面打开app(app处于离线状态)时,获取到的plus.runtime.arguments参数为字符串但实际为路由地址,导致无法跳转到指定页面

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

uni-app中ios从微信分享页面打开app(app处于离线状态)时,获取到的plus.runtime.arguments参数为字符串但实际为路由地址,导致无法跳转到指定页面

返回的值是://platformId=wechat?_wechat_sdk_erased_paste_board_data=1&_wechat_sdk_biz_data=YnBsaXN0MDDcAQIDBAUGBwgJCgsMDQ4PDg4QERITFBUWXXJldHVybkZyb21BcHBab2JqZWN0VHlwZVZvcGVuSURfEBJtdXNpY1ZpZGVvRHVyYXRpb25fEBNtdXNpY1ZpZGVvSXNzdWVEYXRhWGxhbmd1YWdlXXdlY2hhdFZlcnNpb25WcmVzdWx0Wm1lc3NhZ2VFeHRcaXNBdXRvUmVzZW5kV2NvdW50cnlXY29tbWFuZFEwUTBfEBxveGJoSzY1UUxqVVote

1 回复

在uni-app中处理从微信分享页面打开应用(特别是在应用处于离线状态时)并获取到plus.runtime.arguments参数作为路由地址进行页面跳转,确实是一个常见的需求。这里提供一个基于uni-app和HBuilderX的解决方案,通过解析plus.runtime.arguments并跳转到指定的页面。

步骤

  1. 获取启动参数:在应用启动时,通过plus.runtime.arguments获取启动参数。

  2. 解析参数:检查参数格式,并提取出路由地址。

  3. 页面跳转:使用uni-app的页面跳转API跳转到指定的页面。

代码示例

main.js

main.js中,添加代码以在应用启动时处理启动参数:

// #ifdef APP-PLUS
plus.runtime.getLaunchOptions(function(options) {
    if (options && options.referrerInfo && options.referrerInfo.extra) {
        const launchArgs = options.referrerInfo.extra;
        // 假设launchArgs是字符串形式的路由地址,例如'/pages/detail/detail?id=123'
        uni.navigateTo({
            url: decodeURIComponent(launchArgs) // 对URL进行解码处理
        });
    }
});
// #endif

// 其他应用初始化代码...

注意事项

  • 条件编译:使用#ifdef APP-PLUS来确保代码只在5+ App(即使用HBuilderX打包的App)中执行。
  • URL解码:如果启动参数中包含特殊字符,如%20(空格),则需要进行URL解码。
  • 错误处理:在实际应用中,应添加更多的错误处理逻辑,比如检查launchArgs是否为有效的URL格式。

微信配置

确保在微信分享配置中,正确设置了referrerInfo.extra字段,该字段应包含要跳转的路由地址。例如,在微信分享接口中设置:

wx.shareAppMessage({
    title: '分享标题',
    path: '/path/to/share', // 微信内部的分享路径,不影响app的跳转逻辑
    success: function (res) {
        // 分享成功后的回调
    },
    fail: function (err) {
        // 分享失败后的回调
    },
    complete: function (info) {
        // 分享完成后的回调(无论成功或失败)
    }
}, {
    referrerInfo: {
        id: 'some_id',
        extra: encodeURIComponent('/pages/detail/detail?id=123') // 编码后的路由地址
    }
});

注意:上述微信配置中的referrerInfo部分实际上在微信官方API中并不直接支持,这里的示例是为了说明如何在自定义逻辑中传递参数。在实际应用中,你可能需要通过其他方式(如服务器中转或生成带有参数的分享链接)来实现类似功能。

回到顶部