Cordova后台抓取程序插件不适用于iOS

Cordova后台抓取程序插件不适用于iOS,cordova,ios7,plugins,Cordova,Ios7,Plugins,我想实现这个插件:。我使用CLI安装了插件,然后将BackgroundFetch.js文件复制到我的www目录,并在index.html中引用它。我将git url中给出的示例代码放在DeviceReady函数中。但是,在启动时,我仍然面临着错误: TypeError:“undefined”不是对象(评估“Fetcher.configure”) 有人能告诉我为什么会这样吗?我已经试了两天了,但是没有用。任何帮助都将不胜感激。提前谢谢 EDIT1:对不起,我之前没有提到它,我使用命令行创建了一个

我想实现这个插件:。我使用CLI安装了插件,然后将BackgroundFetch.js文件复制到我的www目录,并在index.html中引用它。我将git url中给出的示例代码放在DeviceReady函数中。但是,在启动时,我仍然面临着错误:

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

有人能告诉我为什么会这样吗?我已经试了两天了,但是没有用。任何帮助都将不胜感激。提前谢谢


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

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

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

我哪里做错了?除了将示例代码添加到onDeviceReady中的call 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);
},

不过,我没有看到任何日志消息说“cdvbackgroundfetchconfigure”,在模拟后台提取时,同样的警告如上所述。在执行提取部分时,似乎没有首先运行configure。

Edit2:我猜您已经添加了文档中的全部示例代码(使用
var Fetcher
标记和处理程序
var fetchCallback
并在声明两者之后,运行
Fetcher.configure(fetchCallback);
。 问题可能是您的
index.html
中没有引用jQuery,并且代码在看到行
$时停止运行。获取(…)
。如果是这种情况,jQuery将其放入
www
文件夹,并从
index.html
中引用它。 您是否看到控制台消息
console.log('BackgroundFetch initiated');
?关于
/heartbeat.json
,您更改了吗


编辑:您不需要将BackgroundFetch.js复制到
www
目录,也不需要在
index.html
中引用它。请尝试删除
index.html
中的引用,并在安装后保持插件文件不变。如果您更改了有关文件结构的内容,请C您应该
cordova插件删除该插件,然后再
添加该插件


我不知道您是从哪个控制台收到这个错误。如果它是浏览器控制台,比如Chrome,那就不足为奇了,因为Fetcher只在iDevice(或iOS模拟器)上工作。 Cordova控制台插件不会打印此类消息


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

很抱歉,我没有提到它,我使用命令行创建了一个cordova项目,并添加了如上所述的插件,然后在iOS模拟器和iPhone 4S上运行它。两者都给出了相同的错误。我将代码包装在一个Try-catch块中并警告了错误,这就是出现的错误。谢谢对于这个建议,我删除了js文件及其引用,并再次删除和添加了插件。现在我没有收到任何错误,但我没有看到“CDVBackgroundFetch配置”在日志中。如果我在模拟器上模拟后台提取,我会得到以下错误:-CDVBackgroundFetch onFetch警告:应用程序代理收到了对-Application:performFetchWithCompletionHandler:的调用,但从未调用过完成处理程序。我哪里出错了?除了将示例代码添加到在onDeviceReady中调用Fetcher.configure。非常感谢Clawfish提供的所有帮助。我修改了上面粘贴的DeviceReady代码,错误仍然存在。=/您的
DeviceReady
事件是否触发?例如,您是否有
文档。addEventListener(“DeviceReady”,onDeviceReady,false);