iOS如何停止在后台播放音频?

Posted

技术标签:

【中文标题】iOS如何停止在后台播放音频?【英文标题】:iOS how to stop audio playing in background? 【发布时间】:2015-08-04 08:39:28 【问题描述】:

在我的应用程序中,我正在播放实时音频流,音频也在后台继续播放,为此我正在使用

// Set AVAudiosession
    NSError *sessionError = nil;
    // [[AVAudioSession sharedInstance] setDelegate:self];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

    // Change the default output audio route
    UInt32 doChangeDefaultRoute = 1;
 AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
    self.player = [[AVQueuePlayer alloc] initWithURL:[NSURL URLWithString:streamingUrl]];
    self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

我可以在后台/前台播放音频。 流 url 连续发送音频,我的应用程序在后台连续播放音频,但在某个时间我想停止音频播放器。 所以我的问题是如果我的应用在后台运行(在后台播放),如何停止音频播放器?

【问题讨论】:

希望对您有所帮助:***.com/questions/10504432/… 【参考方案1】:

您可以通过以下方法之一调用停止音频代码,以在后台应用程序时停止音频...在 appdelegate 类中使用以下选项

    您可以直接在音频播放器实例方法上调用音频播放器停止方法 或者 您可以为此使用观察者

  - (void)applicationWillResignActive:(UIApplication *)application

 
[[NSNotificationCenter defaultCenter] postNotificationName: @"stopGCReaderAudioPlayer" object: Nil];
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

  

- (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.
// to stop media player

// 在 vi​​ewdidload 中注册通知您的音频播放器在哪里

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(stopAudioPlayer:) name: @"stopGCReaderAudioPlayer" object: nil];

-(void)stopAudioPlayer: (NSNotification*)notification
[self.audioPlayer stop];
self.audioPlayer = nil;

【讨论】:

您的回答将立即停止音频,但 OP 希望在指定时间(如 30 分钟或 60 分钟)后停止音频。【参考方案2】:

AVQueuePlayer 继承自 AVPlayer。您可以使用pause 方法暂停播放。

【讨论】:

我知道,但是如果应用程序在后台,我的问题是暂停/停止音频?

以上是关于iOS如何停止在后台播放音频?的主要内容,如果未能解决你的问题,请参考以下文章

IOS后台运行 之 后台播放音乐

iPhone 停止在后台播放音频

如何在 iOS 后台播放音频?

iOS 8 在 10 分钟后停止在后台流式传输音频

iOS:在特定时间在后台播放/停止音乐

iPhone 4.0:没有在后台播放音频?