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
上使用deviceorientation
和devicemotion
事件:
提醒任何希望在 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 插件未显示为已安装的主要内容,如果未能解决你的问题,请参考以下文章
Fabric 将项目显示为未迁移到 Firebase,但在迁移屏幕中显示为已迁移
未捕获(承诺)错误:“设备”插件未在 android 上实现
将 Ionic Native / Cordova 插件与 Ionic (React) & Capacitor 一起使用的正确方法是啥?