uni-app 宿主app页面无法切换到小程序页面

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

uni-app 宿主app页面无法切换到小程序页面

操作步骤:

  • 使用android10车载机和官方提供的SDK-Android@4.24-20240903里面的demo

预期结果:

  • android10车载机上小程序能正常显示运行和显示界面

实际结果:

  • android10车载机上小程序没有显示界面

bug描述:

现象:

  1. 使用官方提供的SDK-Android@4.24-20240903里面的demo,通过adb安装宿主app到车载机,点击宿主app,点击小程序入口,页面继续停留在宿主app,等待一段时间,页面还是停留在宿主app。
  2. 通过ps -ef | grep unimp,能看到5个相关进程:
    • u0_a147 9367 1744 2 07:49:20 ? 00:00:00 com.example.unimpdemo
    • u0_a147 9554 1744 10 07:49:20 ? 00:00:03 com.example.unimpdemo:unimp0
    • u0_a147 9899 1744 11 07:49:44 ? 00:00:01 com.example.unimpdemo:unimp1
    • u0_a147 9940 9554 1 07:49:45 ? 00:00:00 com.example.unimpdemo:jse 119 120 1 /data/user/0/com.example.unimpdemo/app_crash/crash_dump.log
    • u0_a147 9983 9899 0 07:49:46 ? 00:00:00 com.example.unimpdemo:jse 43 44 1 /data/user/0/com.example.unimpdemo/app_crash/crash_dump.log 备注:该demo中的小程序在手机和android 10模拟器上都能运行起来。具体的bug日志见附件。

附件:


1 回复

在uni-app中,实现从宿主APP页面切换到小程序页面的功能,通常需要依赖于uni-app提供的跨平台能力和相关的API。然而,直接从一个原生APP页面跳转到小程序页面是一个复杂的过程,因为这两者运行在不同的环境中。

在大多数情况下,这种跳转是通过一些中间机制来实现的,比如使用URL Scheme或者通过某种形式的“桥接”技术。但请注意,直接跳转的具体实现可能会因平台(如iOS、Android)和uni-app的版本而异。

以下是一个简化的示例,展示了如何在uni-app中实现这种跳转的一种可能方式。这个示例假设你已经有一个uni-app项目,并且你已经配置好了小程序和原生APP的相关环境。

步骤1:在原生APP中配置URL Scheme

首先,你需要在原生APP中配置一个URL Scheme,这个Scheme将用于触发从小程序页面到原生页面的跳转。

<!-- AndroidManifest.xml 或 iOS的Info.plist中配置URL Scheme -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="myapp" android:host="page" />
</intent-filter>

步骤2:在uni-app中使用plus.runtime API

在uni-app中,你可以使用5+ App(HBuilderX)提供的plus.runtime API来尝试跳转到原生APP的某个页面。但是,直接跳转到小程序页面通常需要小程序端配合处理。

// 在uni-app的某个页面中触发跳转
if (window.plus) {
    // 判断是否在5+ App环境中
    plus.runtime.launchApp({
        action: 'myapp://page?param1=value1&param2=value2', // 使用配置的URL Scheme
        success: function () {
            console.log('跳转成功');
        },
        fail: function (e) {
            console.error('跳转失败', e);
        }
    });
} else {
    // 如果不是在5+ App环境中,可能需要其他处理逻辑
    console.log('当前不在5+ App环境中');
}

注意

  1. 上述代码仅展示了如何在原生APP中触发一个URL Scheme,并假设原生APP能够处理这个Scheme并导航到相应的页面。
  2. 直接从原生APP页面跳转到小程序页面通常需要小程序的配合,比如通过小程序提供的URL Scheme或者通过某种形式的“桥接”技术。
  3. 由于不同平台和uni-app版本的差异,具体实现可能会有所不同。建议查阅uni-app官方文档和社区资源以获取最新的信息和最佳实践。
回到顶部