Obtenir une erreur lors de l'utilisation d'AVPictureInPictureController dans iOS 13 ou tvOS 13

10

J'ai une petite application qui fonctionne sur iOS et tvOS où j'affiche une vidéo dans UIView.It prend en charge iOS 12 et tvOS 12. Maintenant, je veux montrer PIP pour tvOS, donc essayer d'utiliser AVPictureInPictureController donne l'erreur «L'utilisation d'un identifiant non déclaré» AVPictureInPictureController ".

Même si la cible de déploiement est définie sur tvOS 13. Dans Xcode, les capacités -> Mode d'arrière-plan -> activé «Audio, Airplay et Picture In Picture». Ce code de base donne une erreur.

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

D'autres paramètres sont-ils manquants ou autre chose dont j'ai besoin?

Merci

sia
la source

Réponses:

0

Non pris en charge dans tvOS, comme indiqué dans la documentation d'Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+

Dimitrie-Toma Furdui
la source
essayé d'importer AVFoundation aussi .. toujours la même erreur.
sia
- oui .. je viens de l'essayer .. toujours la même erreur. Je pense que "AVPictureInPictureController" n'est pas pris en charge sur tvOS13 (pas sûr).
sia
Non, ce n'est pas le cas, vérifiez ma réponse mise à jour. Désolé, je pensais que cela donnait l'erreur sur iOS
Dimitrie-Toma Furdui
selon ce lien - developer.apple.com/documentation/avkit/… - semble possible de l'implémenter (encore une fois pas sûr)
sia
Assurez-vous au départ que vous définissez la catégorie audio de lecture, généralement lors de l'utilisation d'AVPlayerViewController pour lire le contenu vidéo. Le mode PIP sera automatiquement invoqué si l'application développée entre en arrière-plan, mais uniquement si elle satisfait à la condition mentionnée ci-dessus. Le lecteur que nous utilisons doit être en mode plein écran, la vidéo doit y être lue et PIP doit être pris en charge par l'appareil et enfin écrire la méthode déléguée pour restaurer l'interface utilisateur de notre lecteur lorsque l'utilisateur revient du mode PIP. La vidéo doit y être lue et PIP doit être pris en charge par l'appareil. source: shorturl.at/AEXY8
redhatvicky
0

POSSIBILITÉ DE PROBLÈMES EN RAISON DES LACUNES DANS LA MISE EN ŒUVRE:

Expérimentez avec l'AVPlayerViewController: assurez-vous d'abord que nous avons défini la catégorie audio de lecture, généralement lorsque nous utilisons un AVPlayerViewController pour lire du contenu vidéo. Le mode PIP sera automatiquement invoqué si l'application développée entre en arrière-plan, mais seulement si elle satisfait à la condition mentionnée ci-dessous, la première est que le lecteur que nous utilisons doit être en mode plein écran, la seconde est que nous devons nous assurer que la vidéo doit être Le jouer et le troisième est le PIP Doit être pris en charge par l'appareil et enfin la méthode déléguée d'écriture pour restaurer l'interface utilisateur de notre lecteur lorsque l'utilisateur revient du mode Image en mode Image.

Implémentation avec _AVPictureInPictureController: vous pouvez trouver un exemple de travail dans le fil ci-dessous. Comment afficher AVPictureInPictureController?

Exploration du problème: afin de confirmer que l'erreur non déclarée n'était pas due aux lacunes de la mise en œuvre et qu'elle était due à environmnet dans Xcode, téléchargez la source, puis ajoutez le dossier Sources dans un autre dossier de votre espace de travail.Ajoutez le dossier à l'aide de " Ajouter des fichiers à ... "et vérifiez maintenant à l'intérieur de xcode.

POSSIBILITÉ DE PROBLÈME DÛ À RAFRAÎCHIR DANS LE XCODE Essayez de corriger par approche 1 Incluez la classe explicitement dans l'en-tête et / ou le corps - au lieu du fichier * .pch. Ensuite, cette erreur pourrait disparaître. La suppression des données dérivées fonctionne également de temps en temps. Avez-vous récemment modifié l'emplacement des préférences par hasard. Certains obtiennent cette erreur lorsqu'ils utilisent un disque virtuel pour les données dérivées, puis reviennent à la valeur par défaut. C'est le cas le plus ennuyeux - car il fait apparaître cette erreur dans presque tous les fichiers.

Essayez Fix By Approach 2 Parfois, une solution simple peut aider à supprimer l'une des lignes #import du fichier pch et à recompiler, ce qui échouera comme prévu.Puis, remettez la ligne supprimée, recompilée et compilée normalement avec toutes les fausses erreurs disparues.

POSSIBILITÉ DE PROBLÈME DURANT LA CACHE D'ERREUR XCODE, SUIVEZ LES ÉTAPES CI-DESSOUS Nettoyer la construction: Command-Option-Shift-K pour nettoyer le dossier de construction. Réinitialiser le simulateur: choisissez iOS Simulator> Réinitialiser le contenu et les paramètres Redémarrez Xcode Supprimez votre dossier DerivedData dans ~ / Library / Developer / Xcode / DerivedData Restart Computer

Supprimez les dossiers / var / d'une manière très ciblée. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Source: Comment vider les caches et nettoyer toutes les cibles Erreurs Xcode 4 et ultérieures "Utilisation d'un identifiant non déclaré", compile / s'exécute très bien Utilisation de l'identifiant non déclaré dans Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player

redhatvicky
la source
0

Pour créer un simple lecteur vidéo

Tout d'abord, vous devrez implémenter un lecteur vidéo de base dans le fichier ViewController.m de votre projet, comme ceci:

#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

Pour plus d'aide, passez par https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

S Habeeb Ullah
la source