iOS:App停用后闹钟App如何播放声音?

Posted

技术标签:

【中文标题】iOS:App停用后闹钟App如何播放声音?【英文标题】:iOS: How do alarm Apps play sound after App is inactive? 【发布时间】:2017-01-12 22:37:16 【问题描述】:

许多闹钟应用在几个小时后设法在锁定屏幕的情况下播放声音(例如:Rise、Wave 闹钟)

您只需在应用打开时设置闹钟并锁定屏幕,屏幕锁定数小时后闹钟就会响起。

我设法弄清楚如何在我的设备被锁定时使用 AVPlayer 播放音频:

    将背景功能设置为音频

    将“应用程序不在后台运行”设置为是

    代码:

    do 
        try AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        print("AVAudioSession Category Playback OK")
    do 
        try AVAudioSession.sharedInstance().setActive(true)
        print("AVAudioSession is Active")
         catch let error as NSError 
            print(error.localizedDescription)
        
     catch let error as NSError 
        print(error.localizedDescription)
    
    

当我尝试设置 NSTimer 或使用 dispatch_after 运行播放我的音频文件并锁定我的 iPhone 的代码时,Timer 会很快停止,因为显然应用程序在几秒钟后就处于非活动状态 (但只有当我从主屏幕启动应用程序时,当我从 xcode 运行应用程序时才不会,顺便说一句)

那些闹钟应用程序如何设法延迟音频?

【问题讨论】:

本地通知,可能 不。本地通知限制为最长 30 秒的声音,并且它们在静音时不会响铃,但这些应用会响 他们可以将闹钟放到您的日历中(闹钟类型的事件)。 【参考方案1】:

这些应用通过退出多任务模式来实现这一点。如果应用程序选择退出多任务模式,如果应用程序在设备锁定时处于前台,则应用程序不会暂停,因此它们可以在时间到达时播放警报声音。你可以阅读更多here

【讨论】:

【参考方案2】:

(代表问题作者发布答案以将其移至答案空间)

我知道他们是怎么做到的。我设置了一个闹钟,听着扬声器的声音。这些应用程序会播放静音以保持活跃。我不知道他们是如何通过 Apple 的检查的,但显然许多闹钟应用程序都这样做并通过了。

【讨论】:

以上是关于iOS:App停用后闹钟App如何播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

iOS音频掌柜-- AVAudioSession

主要解决录音时候不能让当前app内音外放

如何像闹钟专业应用程序一样播放超过 30 秒的闹钟声音?

如何在android中的指定时间播放闹钟?

当应用程序在后台并且手机处于振动状态时,一些闹钟应用程序(例如 Alarmy)如何能够在 iPhone 上播放声音

如何播放警报声音并呈现自定义视图而不仅仅是通知?