如何在后台应用程序时从 JavaScript 发出通知/警报 - PhoneGap iPhone/iOS

Posted

技术标签:

【中文标题】如何在后台应用程序时从 JavaScript 发出通知/警报 - PhoneGap iPhone/iOS【英文标题】:How to issue notification/alert from JavaScript when application in background - PhoneGap iPhone/iOS 【发布时间】:2011-05-15 23:41:34 【问题描述】:

我想根据秒表发出的定时事件向用户发出通知/警报。逻辑在 javascript 中,应用程序在 iPhone 上的 PhoneGap 中运行。

问题:当应用程序在后台时,iPhone 会在 iPhone/ios 的 webview 中暂停 JavaScript 的执行。

触发原生警报对话框,例如使用PhoneGap 的 navigator.notification.alert() 失败,因为在后台根本没有调用警报。

如何有效地将它与 UILocalNotification 结合起来? - 有没有可用的示例/示例/插件?

【问题讨论】:

【参考方案1】:

一般来说,iOS 不允许长时间运行的后台任务,除非您正在执行后台音频、定位服务或 VOIP。

一旦应用程序进入后台,您可以使用任务完成 (beginBackgroundTaskWithExpirationHandler) 让您的逻辑运行一段时间。但是 iOS 仍然会在大约 10 分钟后终止您的任务。

另一种选择是使用 UILocalNotification 预先安排所有定时事件。您可以安排多达 128 个事件,每个事件都有一个可选的重复间隔。以下是 Apple 文档中的示例代码:

// Create a new notification.
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
if (alarm)

    alarm.fireDate = theDate;
    alarm.timeZone = [NSTimeZone defaultTimeZone];
    alarm.repeatInterval = 0;
    alarm.soundName = @"alarmsound.caf";
    alarm.alertBody = @"Time to wake up!";

    [app scheduleLocalNotification:alarm];

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

【讨论】:

以上是关于如何在后台应用程序时从 JavaScript 发出通知/警报 - PhoneGap iPhone/iOS的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 如何在后台处理 AJAX 响应?

Android:在应用程序关闭时从后台推送动态通知

如果在 ios 中收到通知时从后台删除应用程序,didReceiveLocalNotification 不会触发

Nativescript如何在后台发出http请求

Youtube API如何在视频结束时从0秒开始播放视频?框架,Javascript

当应用程序在 iOS 中关闭且应用程序未在后台运行时从推送通知中获取数据