响应设备锁定时的事件

Jen*_*n2k 5 iphone objective-c alarm ios

我正在研究收音机闹钟,我有一些问题.我正在使用警报的本地通知,因此如果应用程序未运行,它会有轻微的后备.

我很清楚设备的局限性,我知道当设备进入后台时我能做什么,不能做什么.

但我的问题是:当我锁定设备时,我已经看到其他应用程序启动音频流.这怎么可能?可以在执行时间范围内吗?

实现这个的最佳方法是什么?是否可以在设备锁定时激活流媒体会话?

编辑

澄清:我知道如何在后台播放音频.但问题是当本地通知或其他事件触发时触发音频播放.

一个似乎这样做的应用程序是Radio Alarm Clock.我还没有尝试过很长一段时间.但似乎这样做.该应用的视频演示:http://www.youtube.com/watch?v = KJQiFOcdBWk

小智 3

您已经声明了您的后台任务吗?

\n
\n

对某些类型后台执行的支持必须由使用它们的应用程序提前声明。应用程序使用其 Info.plist 文件声明对服务的支持。将密钥添加UIBackgroundModes到 Info.plist 文件并将其值设置为包含以下一个或多个字符串的数组:

\n

audio\xe2\x80\x94 该应用程序在后台向用户播放声音内容。(此内容包括使用 AirPlay 流式传输音频或视频内容。)

\n
\n

iOS 应用程序编程指南 - 实现长时间运行的后台任务

\n

您可以通过单击主项目图标来添加它,然后在“信息”选项卡下,您可以将“所需的背景模式”添加到“自定义 iOS 目标属性”部分。“应用程序播放音频”将是三个默认值之一。

\n

新答案的大编辑:

\n

如果其他一切都已就绪,您可以使用 UIApplication 方法让您的应用程序在后台运行

\n
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler\n
Run Code Online (Sandbox Code Playgroud)\n

详细信息请参见:UIApplication 类参考

\n

此处有一个示例:第 21 小时:构建后台感知应用程序

\n

这允许您运行 NSTimer 实例来触发您的音乐播放器。这种方法与 UILocalNotifications 之间的区别在于,这种方法永远不会让应用程序完全进入后台模式,音乐播放器始终存在,这颠覆了从后台创建它的需要,这看起来是不可能的。

\n

您可以设置的计时器时长可能有限制,我还没有测试过去的 14 分钟。

\n