Cordova Background Fetcher插件不适用于iOS

时间:2014-09-17 13:15:44

标签: cordova ios7 plugins

我想实现这个插件:https://github.com/christocracy/cordova-plugin-background-fetch。我使用CLI安装了插件,然后将BackgroundFetch.js文件复制到我的www目录并在index.html中引用它。我将示例代码放在DeviceReady函数中的git url中。不过,在启动时我遇到了错误:

TypeError:'undefined'不是对象(评估'Fetcher.configure')

有人可以告诉我为什么会这样吗?我已经尝试了两天,但无济于事。任何帮助将不胜感激。提前谢谢!
 

<小时/> EDIT1:很抱歉我之前没有提到它,我使用命令行创建了一个cordova项目并添加了如上所述的插件,然后在iOS模拟器和iPhone 4S上运行它。两者都给出了相同的错误。我将代码包装在try-catch块中并提醒错误,这就是错误。

在看到Clawish的建议后,我删除了js文件及其引用,并删除并再次添加了插件。现在我没有收到任何错误,但我没有在日志中看到“CDVBackgroundFetch configure”。如果我模拟模拟器上的背景提取,我会收到错误: -

CDVBackgroundFetch onFetch
警告:应用程序委托收到对-application的调用:performFetchWithCompletionHandler:但从未调用完成处理程序。

我哪里错了?除了添加示例代码以调用onDeviceReady中的Fetcher.configure之外,我没有对代码进行任何更改  

<小时/> EDIT2:

在看到您的Clawfish的第二次编辑后,我删除了服务电话并缩短了功能,如下所示:

onDeviceReady: function() {
app.receivedEvent('deviceready');

var Fetcher = window.plugins.backgroundFetch;

// Your background-fetch handler.
var fetchCallback = function() {
    console.log('BackgroundFetch initiated');
    Fetcher.finish();
}
Fetcher.configure(fetchCallback);
},

仍然,我没有看到任何日志消息说“CDVBackgroundFetch configure”和模拟后台获取相同的警告如上所述。看起来Fetch部分正在执行而没有首先运行configure。

1 个答案:

答案 0 :(得分:1)

编辑2:我猜您已经添加了文档中的整个示例代码(使用var Fetcher和处理程序var fetchCallback的解密,并在声明了两者之后运行{{ 1}}。 问题可能是您的Fetcher.configure(fetchCallback);中没有引用jQuery,并且代码在看到行index.html时停止运行。如果是这种情况,download jQuery,请将其放入$.get(...)文件夹,并从www引用它。 你看到控制台消息index.html了吗?那么console.log('BackgroundFetch initiated');怎么样,你改变了吗?


修改:您无需将BackgroundFetch.js复制到/heartbeat.json目录,也无需在www中引用它。尝试删除index.html中的引用,并在安装后保持插件文件不变。如果您更改了有关文件结构的内容,则应该index.html插件,然后再cordova plugin remove


我不知道您从哪个控制台收到此错误。如果它是一个浏览器控制台,如Chrome,那么没有奇迹,因为Fetcher只能在iDevice(或iOS模拟器)上运行。 Cordova Console插件不会打印此类消息。

尝试使用iOS模拟器中的代码。