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.