Cordova -从远程HTML访问设备功能

Cordova - Access device functionality from remote HTML

本文关键字:访问 功能 HTML Cordova      更新时间:2023-09-26

我有一个Cordova应用程序,它等待deviceready事件,当该事件触发时,将window.location.href设置为远程站点,例如http://foo.bar.com/lander.html。从该页,我有几个链接到其他页面-说page1.htmlpage2.html。我想把一个按钮在page1.html调用Cordova的navigator.notification.vibrate函数。

我有上述设置,一切似乎都有效,除了当我单击page1.html中的按钮试图让设备振动时,navigation.notification是未定义的。我已经将cordova.js复制到foo.bar.com上,并从page1.html引用它。我是否必须在foo.bar.com上包含其他javascript源文件?这种方法会奏效吗?

它会工作,如果不是改变窗口的位置,我是通过AJAX获得的内容,并把内容在一个div容器在index.html页,基础的Cordova应用程序?

如果重要的话,这些都在iOS上。我只包括dialogsvibration插件。我正在接收Cordova应用程序中的deviceready事件,并成功重定向到远程站点。如果还有其他需要我考虑的因素,请告诉我。谢谢。

更新1:我通过使用导航器从Cordova应用程序的本地index.html中获得振动。振动而不是navigator.notification.振动。在远程站点上更改这一点没有帮助。我还尝试从远程页面包含振动.js, Cordova.js和cordova_plugins.js的副本-仍然没有运气。

UPDATE 2:我在Cordova文档中发现了我所询问的内容:从远程加载的HTML页面(未存储在设备本地的HTML页面)调用Cordova JavaScript函数是不支持的配置。这是因为Cordova不是为此而设计的,而且Apache Cordova社区没有对这种配置进行测试。虽然它可以在某些情况下工作,但不建议也不支持。同源策略的挑战包括保持JavaScript和Cordova的本地部分在同一版本同步(因为它们是通过私有api耦合的,而私有api可能会改变),远程内容调用本地函数的可信度,以及潜在的应用商店拒绝。

在webview中显示远程加载的HTML内容应该使用Cordova的InAppBrowser。由于上述原因,InAppBrowser的设计使运行在那里的JavaScript无法访问Cordova JavaScript api。请参阅保安指引

基于此,这听起来是可能的,但就像我们自己出去了。尽管如此,如果有人成功地做到了这一点,我们还是想试一试。

我认为你正在寻找的是一个推送通知。有一个插件。http://ngcordova.com/docs/plugins/pushNotifications/你需要在你的应用上运行一个任务。

希望这是有帮助的。