Errore durante il tentativo di utilizzare AVPictureInPictureController in iOS 13 o tvOS 13


10

Ho una piccola app che gira su iOS e tvOS in cui sto visualizzando un video in UIView. Supporta iOS 12 e tvOS 12. Ora voglio mostrare PIP per tvOS quindi provando ad usare AVPictureInPictureController dà l'errore “Uso dell'identificatore non dichiarato 'AVPictureInPictureController ”.

Anche se la destinazione di distribuzione è impostata su tvOS 13. In Xcode, le funzionalità -> Modalità sfondo -> abilitato "Audio, Airplay e Picture In Picture". Questo codice di base fornisce errori.

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

Altre impostazioni mancanti o qualcos'altro che devo fare?

Grazie

Risposte:


0

Non supportato in tvOS, come indicato nella documentazione di Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+


ho provato a importare anche AVFoundation .. sempre lo stesso errore.
sia il

- sì .. solo ora l'ho provato .. sempre lo stesso errore. Penso che "AVPictureInPictureController" non sia supportato su tvOS13 (non sono sicuro).
sia il

No, non lo è, controlla la mia risposta aggiornata. Spiacenti, ho pensato che
causasse

come da questo link - developer.apple.com/documentation/avkit/… - sembra che sia possibile implementarlo (di nuovo non sono sicuro)
sia

Inizialmente assicurati di impostare la categoria audio di riproduzione, generalmente quando usi AVPlayerViewController per riprodurre contenuti video. La modalità PIP verrà invocata automaticamente se l'applicazione sviluppata entra in background, ma solo se soddisfa la condizione monitorata. Il lettore che stiamo usando dovrebbe essere in modalità schermo intero, il video dovrebbe essere riprodotto al suo interno e il PIP dovrebbe essere supportato dal dispositivo e, infine, scrivere un metodo delegato per ripristinare l'interfaccia utente del lettore quando l'utente torna dalla modalità PIP. Il video dovrebbe essere riprodotto al suo interno e il PIP dovrebbe essere supportato dal dispositivo. fonte: shorturl.at/AEXY8
redhatvicky

0

POSSIBILITÀ DI PROBLEMI DOVUTO AI GRADI DI ATTUAZIONE:

Sperimenta con AVPlayerViewController: inizialmente assicurati di impostare la categoria audio di riproduzione, generalmente quando utilizziamo un AVPlayerViewController per riprodurre contenuti video. La modalità PIP verrà invocata automaticamente se l'applicazione sviluppata entra in background, ma solo se soddisfa la condizione di seguito indicata, il primo è il lettore che stiamo usando dovrebbe essere in modalità schermo intero, il secondo è che dovremmo assicurarci che il video dovrebbe essere Giocare in esso e il terzo è PIP Dovrebbe essere supportato dal dispositivo e, ultimo di tutto, scrivere il metodo delegato per ripristinare la nostra interfaccia utente del giocatore quando l'utente torna dalla modalità Picture in Picture.

Implementazione con _AVPictureInPictureController: è possibile trovare un esempio funzionante nel thread seguente. Come visualizzare AVPictureInPictureController?

Analizzare il problema: per confermare che l'errore non dichiarato non era dovuto alle lacune nell'implementazione ed era dovuto all'ambiente in Xcode, scaricare l'origine e quindi aggiungere la cartella Sorgenti all'interno di un'altra cartella nell'area di lavoro. Aggiungere la cartella utilizzando " Aggiungi file a ... "e ora verifica all'interno di xcode.

POSSIBILITÀ DI EMISSIONE DOVUTA AGGIORNARE IN XCODE Prova correzione mediante approccio 1 Includere esplicitamente la classe nell'intestazione e / o nel corpo anziché nel file * .pch. Quindi questo errore potrebbe scomparire. Anche l'eliminazione dei dati derivati ​​funziona di tanto in tanto. Hai cambiato la posizione nelle preferenze di recente per caso. Alcuni ottengono questo errore quando usano un ramdisk per i dati derivati ​​e poi ritornano ai valori predefiniti. Questo è il caso più fastidioso, poiché fa apparire questo errore in quasi tutti i file.

Prova a risolvere l'approccio 2 A volte una soluzione semplice potrebbe aiutare a eliminare una delle righe #import dal file pch e ricompilare che fallirà come previsto. Quindi rimetti la riga eliminata, ricompilata e compilata normalmente con tutti i falsi errori scomparsi.

POSSIBILITÀ DI EMISSIONE DURANTE L'ERRORE XCODE CACHE, SEGUIRE I SEGUENTI PASSAGGI Clean Build: Command-Option-Shift-K per ripulire la cartella di build. Ripristina simulatore: scegli iOS Simulator> Ripristina contenuto e impostazioni Riavvia Xcode Elimina la cartella DerivedData in ~ / Library / Developer / Xcode / DerivedData Riavvia computer

Elimina le cartelle / var / in modo mirato. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Fonte: Come svuotare la cache e pulire tutti i target Xcode 4 e successivi Xcode errori "Uso dell'identificatore non dichiarato", compilazione / esecuzione corretta Uso dell'identificatore non dichiarato in Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Per creare un semplice lettore video

Innanzitutto, dovrai implementare un lettore video di base nel file ViewController.m del tuo progetto, in questo modo:

#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

Per ulteriore aiuto, passare attraverso https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.