AvAudioSession 在 iOS7 中不起作用?

Posted

技术标签:

【中文标题】AvAudioSession 在 iOS7 中不起作用?【英文标题】:AvAudioSession won't work in iOS7? 【发布时间】:2013-12-04 03:44:38 【问题描述】:
#import "SctreamAudioViewController.h"
#import <AVFoundation/AVFoundation.h>
#import "SecondViewController.h"

@interface SctreamAudioViewController ()
@property (nonatomic, strong) AVPlayer *player;
@end

@implementation SctreamAudioViewController

#define STREAM @"http://localhost/audio.mp3"

- (void)viewDidLoad

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
AVAudiosession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[audioSession setActive:YES error:nil];
NSURL *url = [[NSURL alloc] initWithString:STREAM];
self.player = [[AVPlayer alloc] initWithURL:url];


- (IBAction)play:(id)sender 

[self.player play];

我在网上做了很多研究,我认为这应该是在后台播放音频的正确方法。但是,它只是行不通。我不知道哪里出了问题。请帮忙。谢谢。

【问题讨论】:

您确定localhost 可以访问吗?你在运行http服务器吗?您是否正确配置并启动它? 【参考方案1】:
[[AVAudioSession sharedInstance] setActive:NO error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];

如果您想在应用程序处于后台时播放音频,您应该使用类别 Playback 而不是 playAndRecord。 另外,您需要在 project-> target-> Capabilities-> backgroundMode 中检查 Audio 和 airPlay

【讨论】:

【参考方案2】:

查找 UIBackgroundModes。您需要告诉系统您的应用将在后台播放声音。

【讨论】:

如何?您的意思是在此 plist 中的“所需背景模式”下添加“应用播放音频”?【参考方案3】:
#define STREAM @"http://"

我认为 http 在您的#define 中不正确。尝试给它作为

#define STREAM (@"file://")

【讨论】:

以上是关于AvAudioSession 在 iOS7 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

表视图背景视图在 iOS7 中不起作用

换行模式在ios7中不起作用

UISearchBar 的自定义 InputView 在 iOS7 中不起作用

alertview 中的图像在 ios7 中不起作用

iOS 8 中的 UITableViewCell 约束在 iOS7 中不起作用

UIProgressView 跟踪和进度图像在 iOS7 中不起作用