前言:我正在开发一个闹钟应用程序。许多其他的报警应用程序,如闹钟Pro,可以在屏幕锁定和应用程序位于前台时播放警报。他们的警报器可以发挥无限的时间,并可以逐步增加的体积使用系统的音量。它们也不控制音乐控件(如果打开多任务屏幕并滚动播放音频,您将看不到它们的图标)。
我在复制这个功能时遇到了一些困难。
为了在应用程序处于前台时播放警报,我们会发出本地通知,这非常有效。当屏幕被锁定时,我获得了一些有限的成功(并且应用程序处于非活动状态)
我使用了以下方法:
NSTimer。我设法让应用程序打开超过10分钟,但我无法播放声音。当时间到了AVAudioPlayer播放1秒的静音。当声音结束时,重播声音并检查应用程序是否处于非活动(锁定屏幕)状态。如果它处于锁定的屏幕状态,并且是时候播放警报了,那么就播放它。问题是我必须用
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];以便在背景中继续更新歌曲。该方法将在音乐控件中显示“唤醒”,并将停止任何我们希望避免的当前播放的音乐。
对我的问题有帮助但没有解决的相关知识:
摘要:当屏幕被锁定,应用程序处于前台时,我无法阻止进程在10分钟标记之后被关闭。。
更新
最后我使用了https://github.com/mruegenberg/MMPDeepSleepPreventer,它让我在10分钟后播放一个声音。然而,这耗尽了电池的疯狂。我需要找到一个更有效的解决方案。
更新2
我从应用商店下载了一些http://marcopeluso.com/应用程序。他是深度睡眠保护者的创造者。我下载了他的一些应用程序,运行了一些仪器测试,发现他的应用程序没有我的应用程序消耗电池(大约每小时2.5%,就像他在博客中宣称的那样)。我非常肯定,我需要优化我的应用程序,电池耗尽问题将消失,我的问题将得到解决!
更新3我最终使用了https://github.com/mruegenberg/MMPDeepSleepPreventer
我在它自己独立的xCode项目中运行它,当应用程序处于后台时,它只使用0.5%的cpu。原来是我的应用程序在吸cpu。所以现在一切都很好:)
发布于 2013-03-31 18:08:12
见上面我的回应。不过,基本上
最后我使用了https://github.com/mruegenberg/MMPDeepSleepPreventer
我在它自己独立的xCode项目中运行它,当应用程序处于后台时,它只使用0.5%的cpu。原来是我的代码扼杀了cpu。现在一切都好了!
发布于 2013-03-13 20:01:04
即使你的应用程序在设备打开时处于前台,当它被锁定后,它也会转到后台(志愿辞职活动被称为“自愿辞职”)。现在,从我在互联网上收集到的信息来看,您不应该自己循环播放声音,而应该在您的主要应用程序包中提供其中一种格式的自定义音乐文件:
定制的声音只能是30秒或更短的时间。初始化UILocalNotification对象之后,您需要设置它的firedate属性,它是触发通知的日期和时间(也是重复出现的)。然后通过alertBody (如“醒来”)设置警报消息,并通过alertAction设置警报按钮上的字符串。自定义声音的文件名进入soundName属性。您可以通过调用scheduleLocalNotification:,即一个UIApplication方法来显示通知实例。注意,调用此方法的时间不需要,通常也不是通知将触发.And的时间,即使您通过调用cancelLocalNotification:设置了循环的notification.You取消时间,也只需要调用一次。现在,无论你的应用程序在前台、背景还是没有打开,你的闹钟都应该播放。
都是用这里写的。
https://stackoverflow.com/questions/15364787
复制相似问题