Mendapatkan kesalahan saat mencoba menggunakan AVPictureInPictureController di iOS 13 atau tvOS 13


10

Saya punya aplikasi kecil yang berjalan di iOS dan tvOS di mana saya menampilkan video di UIView. Itu mendukung iOS 12 dan tvOS 12. Sekarang saya ingin menunjukkan PIP untuk tvOS maka mencoba menggunakan AVPictureInPictureController memberikan kesalahan “Penggunaan pengidentifikasi yang tidak terdaftar 'AVPictureInPictureController ”

Meskipun target penyebaran diatur ke TVOS 13. Dalam Xcode, kapabilitas -> Mode latar belakang -> mengaktifkan "Audio, Airplay, dan Picture In Picture". Kode dasar ini memberikan kesalahan.

#import <AVKit/AVKit.h>
if ([AVPictureInPictureController isPictureInPictureSupported]) {
   // code 
}

Adakah pengaturan lain yang hilang atau hal lain yang perlu saya lakukan?

Terima kasih

Jawaban:


0

Tidak didukung di tvOS, sebagaimana dinyatakan dalam dokumentasi Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+


mencoba mengimpor AVFoundation juga .. masih kesalahan yang sama.
sia

- ya .. baru saja mencobanya .. masih kesalahan yang sama. Saya pikir "AVPictureInPictureController" tidak didukung di tvOS13 (tidak yakin).
sia

Tidak, tidak, periksa jawaban saya yang diperbarui. Maaf, saya pikir itu memberikan kesalahan pada iOS
Dimitrie-Toma Furdui

sesuai tautan ini - developer.apple.com/documentation/avkit/… - tampaknya dimungkinkan untuk mengimplementasikannya (sekali lagi tidak yakin)
sia

Awalnya Pastikan bahwa Anda mengatur kategori audio Playback, Umumnya menggunakan AVPlayerViewController untuk memutar konten video. Mode PIP akan secara otomatis dipanggil jika aplikasi yang dikembangkan memasuki latar belakang, tetapi hanya jika memenuhi kondisi montion. Pemain yang kami gunakan harus dalam Mode Layar Penuh, Video Harus Diputar di dalamnya dan PIP Harus didukung oleh perangkat dan akhirnya menulis metode delegasi untuk mengembalikan UI pemain kami ketika pengguna kembali dari mode PIP. Video Harus Diputar di dalamnya dan PIP Harus didukung oleh perangkat. sumber: shorturl.at/AEXY8
redhatvicky

0

KEMUNGKINAN MASALAH YANG DIMAKSUD DENGAN GAPS DALAM IMPLEMENTASI:

Mengalami AVPlayerViewController: Awalnya pastikan bahwa kita mengatur kategori audio Playback, Umumnya ketika kita menggunakan AVPlayerViewController untuk memutar konten video. Mode PIP secara otomatis akan dipanggil jika aplikasi yang dikembangkan memasuki latar belakang, tetapi hanya jika memenuhi kondisi yang disebutkan di bawah ini, Pertama adalah Player yang kita gunakan harus dalam mode Layar Penuh, yang kedua adalah kita harus memastikan bahwa Video Harus Bermain di dalamnya dan yang ketiga adalah PIP. Harus didukung oleh perangkat dan yang terakhir metode delegasi tulis untuk mengembalikan UI pemain kami ketika pengguna kembali dari Gambar dalam mode Gambar.

Implmentasi dengan _AVPictureInPictureController: Anda dapat menemukan contoh yang berfungsi di utas di bawah ini. Bagaimana cara menampilkan AVPictureInPictureController?

Meneliti masalah ini: Untuk mengonfirmasi kesalahan yang tidak dideklarasikan bukan karena kesenjangan dalam implementasi dan itu disebabkan oleh EnvironmentMnet di Xcode, Unduh sumber dan kemudian tambahkan folder Sumber di dalam folder lain di ruang kerja Anda. Tambahkan folder menggunakan " Opsi Tambahkan File ke ... "dan sekarang verifikasi di dalam xcode.

KEMUNGKINAN MASALAH KARENA REFRESH DALAM XCODE Coba Perbaiki Dengan Pendekatan 1 Sertakan kelas secara eksplisit dalam header dan / atau tubuh - bukan file * .pch. Maka kesalahan ini mungkin hilang. Juga menghapus data yang diturunkan berfungsi sesekali. Apakah Anda mengubah lokasi dalam preferensi baru-baru ini karena kebetulan. Beberapa mendapatkan kesalahan ini ketika mereka menggunakan ramdisk untuk data yang diturunkan dan kemudian mereka kembali ke default. Ini adalah kasus yang paling menjengkelkan - karena menyebabkan kesalahan ini muncul di hampir setiap file.

Coba Perbaiki Dengan Pendekatan 2 Kadang-kadang solusi sederhana mungkin membantu menghapus salah satu dari baris #import dari file pch dan mengkompilasi ulang yang akan gagal seperti yang diharapkan. Kemudian masukkan baris yang dihapus kembali, dikompilasi ulang dan dikompilasi secara normal dengan semua kesalahan palsu hilang.

KEMUNGKINAN MASALAH SELAMA XCODE ERROR CACHE, IKUTI LANGKAH DI BAWAH Bangun Bersih: Command-Option-Shift-K untuk membersihkan folder build. Reset Simulator: pilih iOS Simulator> Reset Konten dan Pengaturan Restart Xcode Hapus folder DerivedData Anda di ~ / Library / Developer / Xcode / DerivedData Restart Computer

Hapus / var / folder dengan cara yang sangat ditargetkan. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Sumber: Cara Mengosongkan Cache dan Membersihkan Semua Target Xcode 4 dan kemudian Xcode "Penggunaan pengenal yang tidak dideklarasikan" kesalahan, mengkompilasi / menjalankan dengan baik. Penggunaan pengidentifikasi yang tidak dideklarasikan di Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Untuk membuat pemutar video sederhana

Pertama, Anda perlu mengimplementasikan pemutar video dasar dalam file ViewController.m proyek Anda, seperti:

#import "ViewController.h"

#import <AVKit/AVKit.h>

@interface ViewController ()
@property(nonatomic) AVPlayerViewController *playerViewController;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.view.backgroundColor = [UIColor blackColor];

  // Create a stream video player.
  AVPlayer *player = [[AVPlayer alloc] init];
  self.playerViewController = [[AVPlayerViewController alloc] init];
  self.playerViewController.player = player;

  // Attach video player to view hierarchy.
  [self addChildViewController:self.playerViewController];
  self.playerViewController.view.frame = self.view.bounds;
  [self.view addSubview:self.playerViewController.view];
  [self.playerViewController didMoveToParentViewController:self];
}

@end

Untuk bantuan lebih lanjut, lewati https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.