Cordova Background Fetcher 插件不适用于 iOS

标签 cordova ios7 plugins

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

类型错误:“未定义”不是对象(评估“Fetcher.configure”)

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

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

看到 Clawish 的建议后,我删除了 js 文件和对它的引用,并再次删除并添加了插件。现在我没有收到任何错误,但在日志中没有看到“CDVBackgroundFetch 配置”。如果我在模拟器上模拟后台提取,我会收到错误消息:-
CDVBackgroundFetch onFetch
警告:应用程序委托(delegate)收到了对 -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 配置”并且在模拟后台获取时出现与上面相同的警告。似乎 Fetch 部分是在没有首先运行 configure 的情况下执行的。

最佳答案

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

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

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

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

关于Cordova Background Fetcher 插件不适用于 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891661/

相关文章:

ipad - iOS 7 中的自定义后退指示器图像不垂直居中

ios - UIActionSheet不阻止外部触摸, "under"

ruby-on-rails - Ruby on Rails time_select 插件?

c++ - 编写插件系统?

eclipse更新站点不更新

javascript - 知道设备是 iphone 或 ipad 或 ipod + phonegap

jquery - 如何找到iOS应用程序的播放音​​频路径?

JavaScript:动态注入(inject)和删除 html 页面

java - Apache Cordova 媒体捕获插件不显示视频记录倒计时时间

pdf - iOS7 更新 - 在 UIWebView 中加载的 Airprinting PDF 产生缩放 PDF 到字母页面大小的 50%