Obteniendo error al intentar usar AVPictureInPictureController en iOS 13 o tvOS 13

10

Tengo una pequeña aplicación que se ejecuta en iOS y tvOS donde estoy mostrando un video en UIView. Es compatible con iOS 12 y tvOS 12. Ahora quiero mostrar PIP para tvOS, por lo tanto, intentar usar AVPictureInPictureController da error "Uso de identificador no declarado 'AVPictureInPictureController ".

A pesar de que el objetivo de implementación se estableció en tvOS 13. En Xcode, las capacidades -> Modo de fondo -> activaron "Audio, Airplay e Picture In Picture". Este código básico da error.

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

¿Falta alguna otra configuración o debo hacer algo más?

Gracias

sia
fuente

Respuestas:

0

No es compatible con tvOS, como se indica en la documentación de Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+

Dimitrie-Toma Furdui
fuente
intenté importar AVFoundation también ... sigue siendo el mismo error.
sia
- Sí ... acabo de intentarlo ... sigue siendo el mismo error. Creo que "AVPictureInPictureController" no es compatible con tvOS13 (no estoy seguro).
sia
No, no lo es, verifique mi respuesta actualizada. Lo siento, pensé que da el error en iOS
Dimitrie-Toma Furdui
según este enlace - developer.apple.com/documentation/avkit/… - parece que es posible implementarlo (nuevamente no estoy seguro)
sia
Inicialmente, asegúrese de establecer la categoría de reproducción de audio, generalmente al usar AVPlayerViewController para reproducir contenido de video. El modo PIP se invocará automáticamente si la aplicación desarrollada entra en segundo plano, pero solo si cumple con la condición monitoreada. El reproductor que estamos usando debe estar en modo de pantalla completa, el video debe estar reproduciéndose en él y PIP debe ser compatible con el dispositivo y finalmente escribir un método delegado para restaurar la interfaz de usuario de nuestro reproductor cuando el usuario regrese del modo PIP. El video debe estar reproduciéndose en él y el dispositivo debe admitir PIP. fuente: shorturl.at/AEXY8
redhatvicky
0

POSIBILIDAD DE CUESTIONES DEBIDAS A LAS LAGUNAS EN LA APLICACIÓN:

Experimente con el AVPlayerViewController: inicialmente asegúrese de establecer la categoría de reproducción de audio, generalmente cuando usamos un AVPlayerViewController para reproducir contenido de video. El modo PIP se invocará automáticamente si la aplicación desarrollada entra en segundo plano, pero solo si cumple con la condición mencionada a continuación, el primero es que el reproductor que estamos usando debe estar en modo de pantalla completa, el segundo es que debemos asegurarnos de que el video debe estar Jugar en él y el tercero es PIP. Debe ser compatible con el dispositivo y, por último, escribir el método delegado para restaurar la interfaz de usuario de nuestro reproductor cuando el usuario regrese del modo Imagen en Imagen.

Implicación con _AVPictureInPictureController: puede encontrar un ejemplo de trabajo en el siguiente hilo. ¿Cómo mostrar AVPictureInPictureController?

Profundizando en el problema: para confirmar que el error no declarado no se debió a las brechas en la implementación y se debió al entorno en Xcode, descargue la fuente y luego agregue la carpeta Fuentes dentro de otra carpeta en su espacio de trabajo. Agregue la carpeta usando " Agregar archivos a ... "y ahora verifique dentro de xcode.

POSIBILIDAD DE PROBLEMA DEBIDO A ACTUALIZAR EN EL XCODE Intente corregir por método 1 Incluya la clase explícitamente en el encabezado y / o cuerpo, en lugar del archivo * .pch. Entonces este error podría desaparecer. También eliminar los datos derivados funciona de vez en cuando. ¿Cambiaste la ubicación en preferencias recientemente por casualidad? Algunos obtienen este error cuando usan un disco ram para los datos derivados y luego vuelven al valor predeterminado. Este es el caso más molesto, ya que hace que este error aparezca en casi todos los archivos.

Pruebe Fix By Approach 2 En algún momento, una solución simple puede ayudar a eliminar una de las # líneas de importación del archivo pch y volver a compilar lo que fallará como se esperaba.

POSIBILIDAD DE PROBLEMA DURANTE XCODE ERROR CACHE, SIGA LOS PASOS SIGUIENTES Clean Build: Command-Option-Shift-K para limpiar la carpeta de compilación. Restablecer simulador: elija Simulador de iOS> Restablecer contenido y configuración Reiniciar Xcode Eliminar su carpeta DerivedData en ~ / Library / Developer / Xcode / DerivedData Restart Computer

Elimine las carpetas / var / de una manera muy específica. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Fuente: Cómo vaciar cachés y limpiar todos los objetivos Xcode 4 y posteriores Xcode Errores de "uso de identificador no declarado", compila / funciona muy bien Uso de identificador no declarado en Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player

redhatvicky
fuente
0

Para crear un reproductor de video simple

Primero, necesitará implementar un reproductor de video básico en el archivo ViewController.m de su proyecto, así:

#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

Para obtener más ayuda, consulte https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

S Habeeb Ullah
fuente