在我们为 Android 开发的电容器应用程序中,我们使用电容器.config.json 中的 server.url 从 url 加载整个应用程序。
我们的应用程序是一个单 spa 应用程序,它将 Angular 应用程序加载为多个微前端。我们使用以下命令构建我们的应用程序:
- npm run build(这会为 single-spa 构建根配置)
- npx 上限同步 android
- npx cap 打开 android
- 然后使用 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)
在我们的例子中,在使用 chrome 调试器重新加载或再次关闭和打开应用程序后, Capacitor.isNative字段从true变为false 。我们是否需要做一些额外的事情来确保 Capacitor 将 App 识别为原生 App?任何人都知道为什么在我们重新加载页面后 Capacitor 对象会发生变化?
我们尝试使用其他 Capacitor API 来检测Capacitor.getPlatform()和Capacitor.platform等平台。在重新打开应用程序或使用 chrome 调试器重新加载页面后,这两个都从“android”变为“web”。
我们在尝试加载其他 Capacitor 插件时也看到了类似的行为,其中插件对象在重新加载页面或重新启动应用程序后更改其结构(即,可能是加载 Web 实现而不是 Android 特定实现)。有没有人遇到过类似的问题?