Błąd podczas próby użycia AVPictureInPictureController w iOS 13 lub tvOS 13


10

Mam małą aplikację, która działa na iOS i tvOS, gdzie wyświetlam wideo w UIView. Obsługuje iOS 12 i tvOS 12. Teraz chcę pokazać PIP dla tvOS, dlatego próba użycia AVPictureInPictureController powoduje błąd „Korzystanie z niezadeklarowanego identyfikatora” AVPictureInPictureController ”.

Mimo że cel wdrożenia ustawiony jest na tvOS 13. W Xcode możliwości -> Tryb tła -> włączone „Audio, Airplay i Picture In Picture”. Ten podstawowy kod podaje błąd.

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

Brakuje innych ustawień lub muszę zrobić coś jeszcze?

Dzięki

Odpowiedzi:


0

Nie obsługiwane w tvOS, jak stwierdzono w dokumentacji Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+


Próbowałem importować AVFoundation również .. wciąż ten sam błąd.
— sia

- tak .. właśnie spróbowałem .. wciąż ten sam błąd. Myślę, że „AVPictureInPictureController” nie jest obsługiwany w tvOS13 (nie jestem pewien).
— sia

Nie, nie, sprawdź moją zaktualizowaną odpowiedź. Przepraszam, myślałem, że wyświetla błąd na iOS
— Dimitrie-Toma Furdui

zgodnie z tym linkiem - developer.apple.com/documentation/avkit/… - wygląda na to, że można go zaimplementować (ponownie nie jestem pewien)
— sia

Początkowo upewnij się, że ustawiłeś kategorię Audio odtwarzania, zazwyczaj przy użyciu AVPlayerViewController do odtwarzania treści wideo. Tryb PIP zostanie automatycznie wywołany, jeśli opracowana aplikacja wejdzie w tło, ale tylko wtedy, gdy spełni montowany warunek. Odtwarzacz, którego używamy, powinien być w trybie pełnoekranowym, wideo powinno być w nim odtwarzane, a PIP powinien być obsługiwany przez urządzenie i na koniec napisać metodę delegowania, aby przywrócić interfejs użytkownika odtwarzacza, gdy użytkownik powróci z trybu PIP. Powinno być w nim odtwarzane wideo, a urządzenie powinno obsługiwać PIP. źródło: shorturl.at/AEXY8
— redhatvicky

0

MOŻLIWOŚĆ PROBLEMÓW ZWIĄZANYCH Z GAPS W REALIZACJI:

Eksperymentuj z AVPlayerViewController: początkowo upewnij się, że ustawiliśmy kategorię Audio odtwarzania, zazwyczaj gdy używamy AVPlayerViewController do odtwarzania treści wideo. Tryb PIP zostanie automatycznie wywołany, jeśli opracowana aplikacja przejdzie w tło, ale tylko wtedy, gdy spełnia niżej wymieniony warunek, Pierwszy to odtwarzacz, którego używamy, powinien być w trybie pełnoekranowym, drugi to upewnienie się, że film powinien być Granie w nim, a trzeci to PIP Powinien być obsługiwany przez urządzenie, a na koniec napisz metodę delegowania, aby przywrócić interfejs odtwarzacza, gdy użytkownik powróci z trybu Obraz w obrazie.

Implementacja z _AVPictureInPictureController: Przykład roboczy znajduje się w poniższym wątku. Jak wyświetlić AVPictureInPictureController?

Drążenie problemu: aby potwierdzić, że niezadeklarowany błąd nie był spowodowany lukami w implementacji i był spowodowany środowiskiem w Xcode, Pobierz źródło, a następnie dodaj folder Źródła w innym folderze w obszarze roboczym. Dodaj folder, używając „ Dodaj pliki do ... ”i sprawdź teraz wewnątrz xcode.

MOŻLIWOŚĆ PROBLEMU ZWIĄZANEGO Z ODŚWIEŻANIEM W KODZIE X Spróbuj naprawić przez podejście 1 Uwzględnij klasę wyraźnie w nagłówku i / lub treści - zamiast w pliku * .pch. Wtedy ten błąd może zniknąć. Również usuwanie danych pochodnych działa raz na jakiś czas. Czy ostatnio przez przypadek zmieniłeś preferencje? Niektórzy dostają ten błąd, gdy używają ramdysku dla danych pochodnych, a następnie wracają do wartości domyślnych. Jest to najbardziej irytujący przypadek - ponieważ powoduje to pojawienie się tego błędu w prawie każdym pliku.

Spróbuj naprawić według podejścia 2 Czasami proste rozwiązanie może pomóc usunąć jedną z linii #import z pliku pch i dokonać ponownej kompilacji, która zakończy się niepowodzeniem zgodnie z oczekiwaniami. Następnie wstaw ponownie usuniętą linię, ponownie skompilowana i skompiluje się normalnie z pominięciem wszystkich fałszywych błędów.

MOŻLIWOŚĆ PROBLEMU PODCZAS DACHU BŁĘDU XCODE, OBSERWUJ PONIŻSZE KROKI Czyszczenie kompilacji: Command-Option-Shift-K, aby wyczyścić folder kompilacji. Resetuj symulator: wybierz Symulator iOS> Resetuj zawartość i ustawienia Uruchom ponownie Xcode Usuń folder DerivedData w ~ / Library / Developer / Xcode / DerivedData Uruchom ponownie komputer

Usuń foldery / var / w bardzo ukierunkowany sposób. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Źródło: Jak opróżnić pamięć podręczną i wyczyścić wszystkie cele Xcode 4 i nowsze wersje Xcode Błędy „Użyj niezadeklarowanego identyfikatora”, dobrze się kompiluje / działa Użycie niezadeklarowanego identyfikatora w Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Aby stworzyć prosty odtwarzacz wideo

Najpierw musisz zaimplementować podstawowy odtwarzacz wideo w pliku ViewController.m swojego projektu, na przykład:

#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

Aby uzyskać dalszą pomoc, przejdź https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.