AVPlayerViewController
có nhiều khác biệt trong cách sử dụng từ số MPMoviePlayerViewController
. Thay vì sử dụng thông báo, bạn sử dụng Quan sát giá trị khóa để xác định các đặc tính hiện tại của đối tượng AVPlayer
được liên kết với AVPlayerViewController
. Theo tài liệu:
Bạn có thể quan sát trạng thái của trình phát bằng cách sử dụng khóa-giá trị quan sát. Vì vậy, mà bạn có thể thêm và xóa người quan sát một cách an toàn, AVPlayer sẽ tuần tự hóa thông báo về các thay đổi diễn ra tự động trong khi phát lại trên hàng đợi công văn . Theo mặc định, hàng đợi này là hàng đợi chính (xem dispatch_get_main_queue). Để đảm bảo quyền truy cập an toàn vào các thuộc tính không phải là sốcủa người chơi trong khi thay đổi động ở trạng thái phát lại có thể được báo cáo là , bạn phải truy cập hàng loạt quyền truy cập bằng thông báo của người nhận hàng đợi. Trong trường hợp phổ biến, việc tuần tự hóa như vậy được tự nhiên đạt được bằng cách gọi các phương thức khác nhau của AVPlayer trên chuỗi chính hoặc hàng đợi.
Ví dụ, nếu bạn muốn biết khi nghe nhạc của bạn đã được dừng lại thêm một người quan sát trên rate
tài sản của AVPlayer
đối tượng:
[self.player addObserver:self forKeyPath:@"rate" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context: &PlayerRateContext];
Sau đó, trong quan sát kiểm tra phương pháp nếu giá trị new
là bằng không:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if (context == &PlayerRateContext) {
if ([[change valueForKey:@"new"] integerValue] == 0) {
// summon Sauron here (or whatever you want to do)
}
return;
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
return;
}
Rất nhiều thuộc tính trên AVPlayer
đều có thể quan sát được. Đi qua số Class reference.
Ngoài ra, còn có một số Thông báo có sẵn cho đối tượng AVPlayerItem
bị giới hạn nhưng vẫn hữu ích.
Notifications
AVPlayerItemDidPlayToEndTimeNotification
AVPlayerItemFailedToPlayToEndTimeNotification
AVPlayerItemTimeJumpedNotification
AVPlayerItemPlaybackStalledNotification
AVPlayerItemNewAccessLogEntryNotifi cation
AVPlayerItemNewErrorLogEntryNotification
tôi thấy AVPlayerItemDidPlayToEndTimeNotification
đặc biệt hữu ích để tìm kiếm các mục để bắt đầu một lần phát lại đã hoàn tất.
Sử dụng hai lựa chọn này lại với nhau bạn sẽ có thể thay thế hầu hết nếu không phải tất cả các thông báo cho MPMoviePlayerController
Vâng, có vẻ như rất nhiều công việc. Cảm ơn bạn. –
Bạn cũng có thể cung cấp danh sách các thông báo JWPlayer không? Không thể tìm thấy danh sách súc tích trên mạng. –
Làm cách nào để chuyển đổi MPMoviePlayerPlaybackStateDidChangeNotification trong AVPlayer? –