如何使用 iPhone SDK 4.0 实现警报

Posted

技术标签:

【中文标题】如何使用 iPhone SDK 4.0 实现警报【英文标题】:How to implement an alarm with iPhone SDK 4.0 【发布时间】:2010-07-10 16:04:35 【问题描述】:

我想出了一个非常不寻常的 iPhone 闹钟。但到目前为止,我对如何实际实现这一点有一些想法。首先:暂时忘记后台服务,我将如何执行触发警报等的实际计时器?一个单独的线程?或者 SDK 是否包含我错过的任何不错的警报功能?当然,我需要尽可能提高电池效率。但是现在我没有后台进程。

请就此向我提出建议,因为这是这个应用程序的一个重要概念,无论它是否有效。

【问题讨论】:

【参考方案1】:

我会创建一个local notification。与NSTimer 相比,本地通知的优势在于无论您的应用是否正在运行,它们都能正常工作。

【讨论】:

不过看起来很有趣。我还需要能够做一些 GPS 工作和下载/解析 XML。这可以在后台进行吗? 回答您的问题:“这可能在后台执行吗”--是的,有可能...但是您必须将您的应用声明为需要位置(它通过包含 UIBackgroundModes键入其 Info.plist 文件并将此键的值设置为包含“位置”字符串的数组)...请注意,它将保持 GPS 系统启用,因此会耗尽电池电量。 好的,这些限制让我的想法有些复杂,所以我想我还是得使用 NSTimer 并在前台运行。 链接已更改,新链接:developer.apple.com/reference/usernotifications/…【参考方案2】:

您必须创建一个 UILocalNotification 对象并使用 scheduleLocalNotification 对其进行调度,这很简单,但有很大的限制。您的应用可能会或可能不会收到警报发生的通知。当警报出现时,它将以 AlertView 的形式出现。如果用户点击“关闭”,您不会收到通知。如果他点击“查看详细信息”,那么您会收到事件 didReceiveLocalNotification,您的应用会移动到前台并可以做任何您想做的事情。

您还可以注册 ios4 以接收有关位置更改的更新。可以解析 XML,但在后台运行方法的时间也有限制。

所有信息和示例代码都可以在这里找到:http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html

【讨论】:

是的,这不起作用,因为我需要在实际警报响起前几分钟检查位置。设置警报和火灾之间的时间跨度可能是几个小时。我想我只需要在前台对应用程序执行标准的 NSTimer 方法。

以上是关于如何使用 iPhone SDK 4.0 实现警报的主要内容,如果未能解决你的问题,请参考以下文章

使用标准 api 播放视频风景 Iphone sdk 3.2 4.0

简单的报警应用 iPhone sdk?

Xcode 无法获取进程 XXX 的任务。我该如何解决这个问题? (iPhone SDK 4.0)

iPhone SDK 4.0 中的滑动手势? [关闭]

iphone sdk 4.0 中的按钮尺寸变小了

iphone sdk 3.2 到 4.0 笔尖编辑