iPhone:当应用程序移至后台时播放声音

Posted

技术标签:

【中文标题】iPhone:当应用程序移至后台时播放声音【英文标题】:iPhone: Play sound when app moves to background 【发布时间】:2011-12-12 10:57:29 【问题描述】:

我正在尝试在应用移至后台时播放声音。

- (void)applicationWillResignActive:(UIApplication *)application
   
    NSError *error;
    NSURL *goodByeSoundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"GoodBye" ofType:@"wav"]];
    AVAudioPlayer *goodByeSound = [[AVAudioPlayer alloc] initWithContentsOfURL:goodByeSoundUrl error:&error];
    [goodByeSound play];

此代码不适用于我的设备(带有 ios 5.0 的 iPhone 4)。但它确实适用于模拟器。 如果我将以下行添加到 Info.plist 中,它正在播放声音,但主屏幕上有一个红色条,表示应用程序在后台仍处于活动状态。

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

其实这不是我想要的。我只想播放声音,我不需要应用程序一直在后台运行。

这个问题有解决办法吗?

【问题讨论】:

【参考方案1】:

在你的代码中添加这三行:-

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

【讨论】:

【参考方案2】:

您是否尝试过使用-[UIApplication beginBackgroundTaskWithExpirationHandler:]?

【讨论】:

【参考方案3】:

我认为你不能这样做,因为当你的应用被推到后台时,你正在制作的所有音频都会被静音。

添加背景模式将不起作用,因为这仅适用于音频播放器。

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

【讨论】:

以上是关于iPhone:当应用程序移至后台时播放声音的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台时播放声音

我们可以在 iPhone 应用程序中以特定间隔在后台播放声音吗?

当浏览器在后台运行时收到通知时,使用 Firebase 播放声音

iPhone:如何在 iPod 声音上播放声音?

正在播放其他应用程序中的声音时录音停止

使用 AVAudioPlayer 在后台播放声音序列