2015-10-15 3 views
5

Я пытаюсь воспроизвести аудио из URL-адреса в своем приложении. Все происходит, как ожидалось, в iOS 8 (симулятор и физические устройства). Для iOS 9 он работает в симуляторе, но на устройстве звук просто не воспроизводится. Поток появляется, если я нажимаю на игру, индикатор выполнения также показывает, что звук загружается и воспроизводится, но звук не появляется. Эта проблема происходит на физическом устройстве iOS 9. Он отлично работает с физическим устройством iOS 8.AVPlayer не воспроизводит аудио - iOS 9, Objective - C

Я создал простую кнопку. При нажатии на кнопку загружается AVPlayerViewController и инициализируется AVPlayer с заданным URL. Код выглядит следующим образом:

#import "ViewController.h" 
#import <AVKit/AVKit.h> 
#import <AVFoundation/AVFoundation.h> 


@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
- (IBAction)playAudio:(id)sender { 
    NSURL *url = [NSURL URLWithString:@"https://path/to/my.mp3"]; 
    [self performSegueWithIdentifier:@"playSegue" sender:url]; 
} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    AVPlayerViewController *viewController = (AVPlayerViewController *)segue.destinationViewController; 
    viewController.player = [AVPlayer playerWithURL:(NSURL *)sender]; 
} 

@end 
+0

является URL-ноль в вашей подготовке к Segue? –

+0

Нет. Я сделал 'NSLog («% @ », (NSURL *) отправитель), и он дал URL-адрес в моем журнале. –

ответ

24

После выполнения различных тактик проб и ошибок на протяжении 5 дней, я, наконец, понял, что моя проблема была с выключателем телефона. Когда он отключен, звук не воспроизводится! Таким образом, я добавил следующую строку кода, чтобы указать свою категорию, как воспроизведение, и теперь он играет даже тогда, когда мой переключатель устройства на немой

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

Спасибо!

+1

Спасла мою задницу. Спасибо –

+0

Этот код работает и для меня тоже, спасибо, Но я не смог узнать в iPhone, о котором вы говорите. который немой? –

+1

@ArpitBParekh Переключатель, который я упомянул, находится на левой боковой панели сверху кнопки громкости. Если бы код работал и помогал вам, upvote был бы действительно оценен :) –

1

Для тех, кто с этой же проблемой, вот решение Swift.

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: []) 

И некоторые documentation