在 iOS 的后台任务中调用 Javascript 函数

Posted

技术标签:

【中文标题】在 iOS 的后台任务中调用 Javascript 函数【英文标题】:Call Javascript function in background task in iOS 【发布时间】:2012-07-13 07:07:36 【问题描述】:

我有一个 phonegap 应用程序,我想在后台任务中执行 javascript 代码。当应用程序进入后台时,我开始执行一个 javascript 函数,该函数从 web 数据库中取出数据并将一些值发送到 web 服务,返回的数据可能会向用户切换推送通知。

我发现了如何从 Objective-C here on *** 调用 javascript 以及如何在 ios SDK Documentation pages 中实现长时间运行的后台任务,但我没有找到任何将两者结合起来的东西(我认为例如:当我通过 webview 调用 javascript 代码,当应用程序在后台时,这个 View 是否存在?)所以我想问一些更有经验的 iOS 开发人员这是否可能。

【问题讨论】:

【参考方案1】:

我认为这不可能。 Javascript 需要 UIwebview 才能运行(实时)并且必须对用户可见。当应用程序置于后台时,仅允许运行少量任务 - webview 而不是其中一个。

您最好将您的数据发送到运行 cron-job 或类似的网络服务器,以通过苹果推送通知服务器发送推送通知 - 您也可以绕过这个并使用像 http://urbanairship.com/ 这样的服务

【讨论】:

我现在就是这样。你证实了我的假设。不过我不使用城市飞艇,因为我读到免费计划每月减少到 1 个 Mio 通知。我在 Github 上使用 PushNotification 插件,链接:github.com/phonegap/phonegap-plugins/tree/master/iOS/…。还是谢谢。 我也用过这个插件。。效果很好!【参考方案2】:

我在 iOS 5+ 上对此进行了试验,这是可能的。我创建了一个小的 PhoneGap 插件来演示它是如何工作的。查看它,并查看自述文件以获取大部分信息。

https://github.com/jocull/phonegap-backgroundjs

【讨论】:

以上是关于在 iOS 的后台任务中调用 Javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章

在android中安排后台任务并从任务中调用react-native javascript方法

后台任务运行时未调用 iOS applicationWillEnterForeground 和黑屏

在 iOS 中定期在后台线程中运行任务

后台 Javascript 或 Cordova 应用程序中的计时器任务

(iOS)后台运行下载任务

在 iOS 中运行后台服务