Ok, vì vậy ứng dụng của tôi phát video, tôi muốn âm thanh tiếp tục phát trong nền. Nhưng khi tôi nhấn nút "Home", phát lại dừng lại. Tôi đang thử nghiệm trên iPhone 4s với iOS 5.0.1AVPlayer: Âm thanh nền dừng khi nhấn nút trang chủ, nhưng phát với màn hình khóa
Điều gì đang hoạt động?
- Nếu video đang phát và tôi khóa màn hình, nó vẫn tiếp tục phát,
- tôi có thể kiểm soát phát lại từ các điều khiển màn hình khóa: tiếp theo, trước, chơi, tạm dừng.
- Nếu tôi bấm "nhà", sau đó đi đến "điều khiển từ xa" từ thanh đa nhiệm, nó hoạt động.
Có vấn đề gì?
- Tôi muốn các ứng dụng để tiếp tục chơi khi tôi nhấn nút "home", bởi vì khi tôi làm, âm thanh dừng.
Tôi đã làm gì thế này:
- Added "âm thanh" để "bắt buộc chế độ nền" trong app.plist tôi
Added đoạn mã sau để ứng dụng ứng dụng đại biểu của : didFinishLaunchingWithOptions:
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
Trong điều khiển xem của tôi, tôi đã thực hiện các phương pháp để nhận điều khiển từ xa:
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//End recieving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[self play:nil];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[self actionPlaybackPreviousItem];
break;
case UIEventSubtypeRemoteControlNextTrack:
[self actionPlaybackNextItem];
break;
default:
break;
}
}
}
Tại sao mọi thứ hoạt động nhưng, điều này?
Bạn cũng có thể đăng ký từ bên trong máy nghe nhạc của mình vào 'UIApplicationDidEnterBackgroundNotification' khi phim đang phát và loại bỏ các quan sát khi bạn dừng phim. Bạn vẫn phải sử dụng bộ hẹn giờ để tiếp tục video khi thông báo được khởi chạy. – MacTeo
Otto Boy đã bình luận [liên kết này] (https://developer.apple.com/library/content/qa/qa1668/_index.html), nhưng bộ hẹn giờ không tốt cho trường hợp này. Khi chúng tôi sử dụng bộ hẹn giờ, có một khoảng dừng ngắn trong khoảng 0.1 giây. Bạn chỉ cần loại bỏ AVPlayer khỏi AVPlayerLayer. –