Beim Versuch, AVPictureInPictureController in iOS 13 oder tvOS 13 zu verwenden, wird ein Fehler angezeigt

10

Ich habe eine kleine App, die unter iOS und tvOS ausgeführt wird und in der ich ein Video in UIView anzeige. Sie unterstützt iOS 12 und tvOS 12. Jetzt möchte ich PIP für tvOS anzeigen. Daher wird beim Versuch, AVPictureInPictureController zu verwenden, der Fehler "Verwendung der nicht deklarierten Kennung" AVPictureInPictureController angezeigt ”.

Obwohl das Bereitstellungsziel auf tvOS 13 festgelegt wurde. In Xcode wurden die Funktionen -> Hintergrundmodus -> "Audio, Airplay und Bild in Bild" aktiviert. Dieser Basiscode gibt einen Fehler aus.

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

Fehlen noch andere Einstellungen oder muss ich noch etwas tun?

Vielen Dank

sia
quelle

Antworten:

0

Wird in tvOS nicht unterstützt, wie in der Apple- Dokumentation angegeben

SDKs

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+

Dimitrie-Toma Furdui
quelle
habe auch versucht, AVFoundation zu importieren .. immer noch der gleiche Fehler.
Sia
- ja .. habe es gerade versucht .. immer noch der gleiche Fehler. Ich denke, "AVPictureInPictureController" wird auf tvOS13 nicht unterstützt (nicht sicher).
Sia
Nein, das ist es nicht. Überprüfen Sie meine aktualisierte Antwort. Entschuldigung, ich dachte, dass es den Fehler auf iOS gibt
Dimitrie-Toma Furdui
Laut diesem Link - developer.apple.com/documentation/avkit/… - scheint es möglich zu sein, es zu implementieren (wieder nicht sicher)
sia
Stellen Sie zunächst sicher, dass Sie die Audiokategorie Wiedergabe festlegen. Im Allgemeinen wird AVPlayerViewController zum Abspielen von Videoinhalten verwendet. Der PIP-Modus wird automatisch aufgerufen, wenn die entwickelte Anwendung in den Hintergrund tritt, jedoch nur, wenn die montierte Bedingung erfüllt ist. Der von uns verwendete Player sollte sich im Vollbildmodus befinden, das Video sollte darin abgespielt werden und PIP sollte vom Gerät unterstützt werden und schließlich eine Delegierungsmethode schreiben, um die Benutzeroberfläche unseres Players wiederherzustellen, wenn der Benutzer aus dem PIP-Modus zurückkehrt. Das Video sollte darin abgespielt werden und PIP sollte vom Gerät unterstützt werden. Quelle: shorturl.at/AEXY8
redhatvicky
0

MÖGLICHKEIT DER FRAGEN DURCH DIE UMSETZUNGSLÜCKEN:

Erfahrung mit dem AVPlayerViewController: Stellen Sie zunächst sicher, dass wir die Audiokategorie Wiedergabe festlegen. Im Allgemeinen, wenn wir einen AVPlayerViewController zum Abspielen von Videoinhalten verwenden. Der PIP-Modus wird automatisch aufgerufen, wenn die entwickelte Anwendung in den Hintergrund wechselt, jedoch nur, wenn die unten genannte Bedingung erfüllt ist. Erstens sollte sich der von uns verwendete Player im Vollbildmodus befinden, zweitens sollten wir sicherstellen, dass das Video angezeigt wird Das Spielen darin und das dritte ist PIP. Sollte vom Gerät unterstützt werden und als letztes die Delegatmethode schreiben, um die Benutzeroberfläche unseres Players wiederherzustellen, wenn der Benutzer im Bildmodus von Bild zurückkehrt.

Implementierung mit _AVPictureInPictureController: Ein funktionierendes Beispiel finden Sie im folgenden Thread. Wie zeige ich AVPictureInPictureController an?

Drilldown des Problems: Um zu bestätigen, dass der nicht deklarierte Fehler nicht auf die Lücken in der Implementierung und auf die Umgebung in Xcode zurückzuführen ist, laden Sie die Quelle herunter und fügen Sie den Ordner Sources in einem anderen Ordner in Ihrem Arbeitsbereich hinzu. Fügen Sie den Ordner mit " Datei zu ... hinzufügen und jetzt in xcode überprüfen.

MÖGLICHKEIT DER AUSGABE DURCH ERNEUERUNG IM XCODE Try Fix By Approach 1 Fügen Sie die Klasse explizit in den Header und / oder Body ein - anstelle der * .pch-Datei. Dann könnte dieser Fehler verschwinden. Auch das Löschen der abgeleiteten Daten funktioniert von Zeit zu Zeit. Haben Sie den Standort in den Einstellungen kürzlich zufällig geändert? Einige erhalten diesen Fehler, wenn sie eine Ramdisk für abgeleitete Daten verwenden und dann zur Standardeinstellung zurückkehren. Dies ist der ärgerlichste Fall, da dieser Fehler dann in fast jeder Datei auftritt.

Versuchen Sie Fix By Approach 2 Manchmal kann eine einfache Lösung helfen, eine der # import-Zeilen aus der pch-Datei zu löschen und neu zu kompilieren, was wie erwartet fehlschlägt. Setzen Sie dann die gelöschte Zeile wieder ein, kompilieren Sie sie neu und kompilieren Sie sie normal, wobei alle falschen Fehler verschwunden sind.

MÖGLICHKEIT DER AUSGABE WÄHREND DES XCODE ERROR CACHE, FOLGEN SIE DEN UNTEN SCHRITTEN Clean Build: Command-Option-Shift-K, um den Build-Ordner zu bereinigen. Simulator zurücksetzen: Wählen Sie iOS Simulator> Inhalt und Einstellungen zurücksetzen. Xcode neu starten Löschen Sie Ihren DerivedData-Ordner in ~ / Library / Developer / Xcode / DerivedData Computer neu starten

Löschen Sie die Ordner / var / sehr zielgerichtet. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Quelle: So leeren Sie Caches und bereinigen alle Ziele Xcode 4 und höher Xcode "Verwendung nicht deklarierter Bezeichner" -Fehler, kompiliert / läuft einwandfrei Verwendung nicht deklarierter Bezeichner in Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player

redhatvicky
quelle
0

So erstellen Sie einen einfachen Videoplayer

Zunächst müssen Sie einen einfachen Videoplayer in die ViewController.m-Datei Ihres Projekts implementieren, wie folgt:

#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

Für weitere Hilfe gehen Sie durch https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

S Habeeb Ullah
quelle