2013-04-10 266 views
2

有一個名爲IHeartRadio的應用程序,它可讓您設置一個睡眠定時器,該定時器將在指定的時間間隔後關閉音頻。在後臺停止音頻

您首先選擇要收聽的電臺,然後選擇一段時間後再停止播放。該應用程序不需要在前臺發生這種情況。

應用程序在背景中時如何停止音頻?

一個理論是用無聲音頻設置UILocalNotification。然後,UILocalNotification將接管設備的音頻,實際上可以消除正在播放的任何音頻。這沒有用。

定時器在背景中不起作用,這在後臺基於時間的行爲方面沒有多大意義。

回答

0

您可以在您的AppDelegate中使用applicationDidEnterBackground事件來處理應用程序進入後臺並停止使用此方法的音頻。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 

    // add your audio stopping code .. 
} 
+0

也許我不清楚:我想停止音頻後,應用程序已經在後臺,而不是在它的方式背景。 – 2013-04-11 01:56:33

1

When the UIBackgroundModes key contains the audio value, the system’s media frameworks automatically prevent the corresponding app from being suspended when it moves to the background. As long as it is playing audio or video content, the app continues to run in the background. However, if the app stops playing the audio or video, the system suspends it.

iOS App Programming Guide

+0

嗯。根據我的經驗,即使我在應用程序的plist中的「所需的背景模式」下聲明瞭「應用程序播放音頻」,NSTimer也不工作。如果不是UILocalNotification或NSTimer,我還能採取其他基於時間的行動嗎? – 2013-04-11 02:00:49

+0

我想這可能是因爲我的應用沒有播放任何音頻。我將嘗試將沉默與播放類別混合,看看是否有效。 – 2013-04-11 21:32:55