响应设备锁定时的事件
我正在使用收音机闹钟,并且出现了一些问题。 我正在使用本地通知报警,所以如果应用程序没有运行,它会有一个温和的回退。响应设备锁定时的事件
我非常了解设备的局限性,我知道设备进入后台后我能做什么,不能做什么。
但我的问题是这样的: 我已经看到其他应用程序启动时,我已经锁定设备的音频流。这怎么可能?这可能在执行时间框架内吗?
如何实现这个最好的方法?当设备被锁定时,我可以激活流会话吗?
编辑
为了澄清:我知道如何使音频播放的背景。但是,当本地通知或其他事件触发时,问题就是触发音频回放。
似乎这样做的一个应用程序是Radio Alarm Clock。我还没有尝试过很长一段时间呢。但它似乎这样做。该应用的视频演示:http://www.youtube.com/watch?v=KJQiFOcdBWk
您是否已经宣布了您的后台任务?
支持某些类型的后台执行必须由使用它们的应用程序预先声明。应用程序使用Info.plist文件声明对服务的支持。将
UIBackgroundModes
密钥添加到Info.plist文件中,并将其值设置为包含一个或多个以下字符串的数组:
audio
- 应用程序在后台播放可听内容给用户。 (此内容包括使用AirPlay的流式音频或视频内容。)
iOS App Programming Guide - Implementing Long Running Background Tasks
您可以通过点击您的主项目的图标,然后将信息选项卡,您可以添加“所需的背景模式”下添加此“自定义iOS目标属性”部分。 “App Plays Audio”将是三个默认值之一。
大编辑有了新答案:
如果一切已经是命令,你可以让你的应用程序使用UIApplication的方法
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler
在后台运行
这里详细:UIApplication Class Reference
举一个例子:Hour 21: Building Background-Aware Applications
这允许你运行一个触发y的NSTimer实例我们的音乐播放器这种方法和UILocalNotifications之间的区别在于,这种方法从不让应用程序完全进入后台模式,音乐播放器存在整个时间,这颠覆了从后台创建它的需要,这看起来是不可能的。
可能有限制多久你可以设置一个计时器,我还没有测试过去14分钟了。
听起来不错,我编辑了包括向项目添加声明的位置。 – 2012-03-11 19:09:19
谢谢,我知道这件事,但这实际上并不是我所要求的。我知道背景模式和背景音频。但我真正想要的是将来在应用程序中发布一些内容。 请参阅我编辑的第一个问题以获取更多信息。 – Jensen2k 2012-03-12 07:45:33
谢谢,我接受了答案,因为我认为我会工作,这是一个很好的答案。但它在我的使用案例中并不起作用。我所做的是实施MMPDeepSleepPreventer,可以在这里找到:https://github.com/marcop/MMPDeepSleepPreventer 感谢所有帮助无论如何! :-) – Jensen2k 2012-03-13 22:13:23
当我早些时候回答时,我认为这比实际上更容易一些,试图实现它,我遇到了同样的问题。你能指出我正在做这项工作的其他应用程序吗? – 2012-03-11 21:50:07
编辑我的答案,指出一个这样做的应用程序。 – Jensen2k 2012-03-12 07:44:48
看起来有可能毕竟,我编辑了我的答案,包括一个新的方法来解决问题 – 2012-03-12 20:09:49