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

时间:2015-07-14 20:33:09

标签: javascript html ios cordova

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

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

如果不是更改窗口位置而是通过AJAX获取内容并将内容放在作为Cordova应用程序基础的index.html页面的div容器中,它会起作用吗?

如果重要的话,这就是iOS上的全部内容。我仅包含了dialogsvibration个插件。我在Cordova应用程序中收到deviceready事件并成功重定向到远程站点。如果还有其他因素我需要考虑,请告诉我。感谢。

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

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

应使用Cordova的InAppBrowser在webview中显示远程加载的HTML内容。 InAppBrowser的设计使得在那里运行的JavaScript由于上面列出的原因而无法访问Cordova JavaScript API。请参阅安全指南。

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

1 个答案:

答案 0 :(得分:1)

我想要的是推送通知。有一个插件。 http://ngcordova.com/docs/plugins/pushNotifications/ 您需要在应用程序上运行任务。

希望这有用。