设置设备音量 - UILocalNotification - iphone处于静音模式

问题描述:

当应用程序在后台生成UILocalNotification时,如何设置设备音量(以静音模式)?我正在开发闹钟应用程序,因此声音必须以静音模式播放,我正在使用本地通知处理应用程序闹钟。设置设备音量 - UILocalNotification - iphone处于静音模式

在这个问题上陷入困境,无法在无声模式下播放闹钟。

请帮助..

+0

无声开关是有原因的... – Ahti 2011-12-22 11:47:54

+1

但是闹钟也应该在无声模式下播放.. – 2011-12-22 12:00:35

+0

我不同意这一点。该设备应该振动,但不应播放声音。我的意思是什么是静音模式好,如果它实际上并不保证你的设备会保持沉默(除了找到我的iPhone警报之类的东西)?我发现它可以讨论,让用户直接启动它时发出声音(启动vdeo回放或者那样),但那是全部。 (不知道苹果是否这样做,但如果他们这样做,他们应该改变它) – Ahti 2011-12-22 12:23:50

你必须认识到,本地通知被触发,即使您的应用程序被杀害。这导致我得出结论,可能无法做到这一点。 但你可以尝试这样的:

 
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; 
      AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 

你让你的音频会话使用权之前。

+1

感谢Vanya回复。但是我们没有使用AVAudioPlayer播放通知,本地通知是从操作系统发出的。如果你认为这会起作用,你可以通过提供一些示例代码来提供帮助。 – 2011-12-23 06:51:57

这根本不可能。 UILocalNotification弹出窗口和声音由另一个系统进程生成,并且该进程会观察设备的静音模式,因此如果设备处于静音状态,则不会播放通知声音。

如果您希望闹钟应用程序在设备处于静音模式时播放闹钟声音,则必须直接从您的应用程序播放闹钟声音。要做到这一点,你需要保持你的应用程序在后台运行,那么你将不得不在后台播放闹钟声音文件。后者可以通过指定“音频”,在您的info.plist的“所需的背景模式”属性(你将不得不将该属性添加到您的plist文件)

现在,使用AVAudioPlayer来完成,还有一个办法播放声音,即使设备是沉默的设置音频会话类别是这样的:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil]; 

希望这有助于。