如何在后台应用程序时从 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的主要内容,如果未能解决你的问题,请参考以下文章
如果在 ios 中收到通知时从后台删除应用程序,didReceiveLocalNotification 不会触发