我一直在研究任何可能的方法来做一个警报应用程序,如AppStore中的应用程序 (AlarmMon, Rocket Alarm). 他们可以连续警报声甚至应用程序在后台 .

我试图使用CLLocationManager来更新和扩展backgroundTimeRemaining来关闭app的位置权限 .

当闹钟响起时,即使您接到电话也不会停止(您可以接听电话,与来电者通话并同时听到他们的闹钟声) .

Apple和setKeepAlive是Apple的 unacceptable . (一些开发人员说他们的应用在使用VoIP时遭到拒绝)

播放沉默声似乎是扩展backgroundTimeRemaining的好方法,但在文档中提到你不应该播放静音 .

我做了什么

  • AVFoundation(AVAudioSession,AVAudioPlayer)

  • AudioServices(AudioServicesCreateSystemSoundID,AudioServicesCreateSystemSoundID,AudioServicesPlaySystemSoundWithCompletion)

第二种方法是正常播放声音和振动设备,但问题是它无法播放超过180秒 (backgroundTimeRemaing).

他们在应用程序中说的关键条件(AlarmMon)

该应用程序不能被用户杀死 . 如果app被用户杀死,它将发送一个本地通知循环 . (来自应用程序的本地通知超过了 Apple (64 times) 提到的最大数量,并逐一推送 continuously.