我想实现这个插件:https://github.com/christocracy/cordova-plugin-background-fetch。我使用CLI安装了插件,然后将BackgroundFetch.js文件复制到我的www目录并在index.html中引用它。我将示例代码放在DeviceReady函数中的git url中。不过,在启动时我遇到了错误:
TypeError:'undefined'不是对象(评估'Fetcher.configure')
有人可以告诉我为什么会这样吗?我已经尝试了两天,但无济于事。任何帮助将不胜感激。提前谢谢!
在看到Clawish的建议后,我删除了js文件及其引用,并删除并再次添加了插件。现在我没有收到任何错误,但我没有在日志中看到“CDVBackgroundFetch configure”。如果我模拟模拟器上的背景提取,我会收到错误: -
CDVBackgroundFetch onFetch
警告:应用程序委托收到对-application的调用:performFetchWithCompletionHandler:但从未调用完成处理程序。
我哪里错了?除了添加示例代码以调用onDeviceReady中的Fetcher.configure之外,我没有对代码进行任何更改
在看到您的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。
答案 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模拟器中的代码。