Capacitor Motion 插件未显示为已安装

Posted

技术标签:

【中文标题】Capacitor Motion 插件未显示为已安装【英文标题】:Capacitor Motion plugin not showing as installed 【发布时间】:2021-05-26 19:46:15 【问题描述】:

我一直在尝试将 Motion 功能添加到我的 Capacitor 应用程序中,尽管像所有其他可以工作的插件一样安装,但 Motion 插件没有出现在我的插件列表或 javascript 中的 Capacitor.Plugins 对象中。

像所有其他插件一样,我使用npm install @capacitor/motion 安装,然后与npx cap sync 同步。安装似乎成功,但随后通过npx cap ls 列出插件会显示所有插件除了 Motion。

安装结果:

% npm install @capacitor/motion

added 1 package, and audited 16 packages in 860ms

found 0 vulnerabilities

然后我做了一个npx cap sync 并将更新后的capacitor.js 复制到我的服务器位置。

插件列表结果:

% cap ls

[info] Found 10 Capacitor plugins for android:
       @capacitor-community/screen-brightness@1.0.1
       @capacitor/browser@1.0.0
       @capacitor/dialog@1.0.0
       @capacitor/geolocation@1.0.0
       @capacitor/haptics@1.0.0
       @capacitor/local-notifications@1.0.0
       @capacitor/screen-reader@1.0.0
       @capacitor/status-bar@1.0.0
       @capacitor/text-zoom@1.0.0
       @capacitor/toast@1.0.0
[info] Found 10 Capacitor plugins for ios:
       @capacitor-community/screen-brightness@1.0.1
       @capacitor/browser@1.0.0
       @capacitor/dialog@1.0.0
       @capacitor/geolocation@1.0.0
       @capacitor/haptics@1.0.0
       @capacitor/local-notifications@1.0.0
       @capacitor/screen-reader@1.0.0
       @capacitor/status-bar@1.0.0
       @capacitor/text-zoom@1.0.0
       @capacitor/toast@1.0.0
[info] Listing plugins for web is not possible.

JavaScript 中Capacitor.Plugins 对象的内容:

Capacitor.Plugins: 
  Browser,
  Dialog,
  Geolocation,
  Haptics,
  LocalNotifications,
  ScreenBrightness,
  ScreenReader,
  StatusBar,
  TextZoom,
  Toast,
  WebView

我应该通过其他方式访问Capacitor.Plugins.Motion 以侦听orientation 事件吗?

谢谢!

【问题讨论】:

【参考方案1】:

更正/更新:根据@jcesarmobile 下面的评论,Motion API 已弃用,我可能无法使用它,因为我的内容托管在 LAN 上没有 https 的服务器,这是 JavaScript 动作 API 需要的。

~~~~

Motion 插件已被弃用:https://github.com/ionic-team/capacitor/issues/1499

相反,我们必须在window 上使用deviceorientationdevicemotion 事件:

https://developer.mozilla.org/en-US/docs/Web/API/Window/devicemotion_event https://developer.mozilla.org/en-US/docs/Web/API/Window/deviceorientation_event

提醒任何希望在 localhost 或标准 http 服务器上使用这些事件的人,它们只能通过 https 获得。

看到这个问题:deviceorientation of javascript event is not firing in chrome android

【讨论】:

Motion 插件没有被弃用,它没有出现在列表中,因为它是一个仅限 Web 的插件,即使在它使用 Web 实现的本机平台中也是如此。仅 Web 插件不会添加到 Plugins 对象中,因此只有从其包中导入插件才能使用它。 @jcesarmobile - 感谢您的澄清!那么我将无法将它与 vanilla JavaScript 一起使用?即使我使用打包程序,有没有什么方法可以在不需要托管在安全服务器上的情况下使用它? 是的,如果您使用打包程序,则可以将其与原生 JavaScript 一起使用。在 iOS 和 Android 上应该在没有安全上下文的情况下工作,因为 iOS 认为本地资产是安全的,而 Android 从 http://localhost 加载,这是一个例外(或者您也可以将应用程序配置为使用 https://localhost 我们的设置要求我们将 Web 应用程序托管在本地网络上,而不是在设备上或在具有 SSL 的服务器上的云中。到目前为止,所有插件都可以很好地使用此设置,但是运动 API 的 https 要求意味着我们无法将它们托管在我们的 LAN 服务器上。我们可能只需要找出一个混合解决方案。感谢您的帮助! 电容器用于在您的应用中分配您的资产。如果您从本地网络中的 url 加载,除非您进行端口转发(这将需要配置您的所有设备,我认为在 iOS 上不可能),否则它将无法工作。您可能可以使用 ngrok 之类的东西,我用它来测试需要 https 而无需配置证书的 Web API

以上是关于Capacitor Motion 插件未显示为已安装的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的数组未显示为已过滤?

Sonarlink 插件未在 Eclipse 中安装

列表中选择的项目未显示为已选择

Fabric 将项目显示为未迁移到 Firebase,但在迁移屏幕中显示为已迁移

未捕获(承诺)错误:“设备”插件未在 android 上实现

将 Ionic Native / Cordova 插件与 Ionic (React) & Capacitor 一起使用的正确方法是啥?