在 Webview 中重新加载页面或重新启动应用程序时,Capacitor.isNative 会更改值

问题描述

在我们为 Android 开发的电容器应用程序中,我们使用 capacitor.config.json 中的 server.url 从 url 加载整个应用程序

我们的应用程序是一个单一的 SPA 应用程序,它将 Angular 应用程序加载为多个微前端。我们使用以下命令构建我们的应用程序:

  1. npm run build(这会为 single-spa 构建根配置)
  2. npx cap 同步 android
  3. npx cap 打开安卓
  4. 然后使用 Android Studio 构建 APK

然后我们尝试在我们的角度组件之一中执行以下代码。这样做是为了有条件地在组件中实现一些特定于平台的逻辑。

import { Capacitor } from '@capacitor/core';
console.log(Capacitor.isNative); 
//this logs "true" when loading the app after clearing app data or loading app for first time
//but logs "false" when reloading the webview using chrome debugger or when closing app and opening again(without clearing data)

在我们的例子中,Capacitor.isNative 字段在使用 chrome 调试器重新加载或再次关闭和打开应用程序后从 true 变为 false。我们是否需要做一些额外的事情来确保 Capacitor 将应用程序识别为原生应用程序?有人知道为什么我们重新加载页面后 Capacitor 对象会发生变化吗?

我们尝试使用其他 Capacitor API 来检测平台,例如 Capacitor.getPlatform()Capacitor.platform。在重新打开应用程序或使用 Chrome 调试器重新加载页面后,这两个选项都从“android”更改为“web”。

在尝试加载其他电容器插件时,我们也看到了类似的行为,其中插件对象会在页面重新加载或应用程序重新启动后更改其结构(即可能加载的是 Web 实现而不是 Android 特定的实现)。有没有人遇到过类似的问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)