Obtendo erro ao tentar usar o AVPictureInPictureController no iOS 13 ou tvOS 13


10

Eu tenho um aplicativo pequeno que roda no iOS e no tvOS onde estou exibindo um vídeo no UIView.It suporta o iOS 12 e o tvOS 12. Agora, quero mostrar o PIP para o tvOS e, portanto, tentar usar o AVPictureInPictureController dá o erro “Uso do identificador não declarado 'AVPictureInPictureController ”.

Embora o destino de implantação esteja definido como tvOS 13. No Xcode, os recursos -> modo de plano de fundo -> habilitaram "Audio, Airplay e Picture In Picture". Este código básico dá erro.

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

Faltam outras configurações ou algo mais que eu precise fazer?

obrigado

Respostas:


0

Não suportado no tvOS, conforme declarado na documentação da Apple

SDKs

iOS 9.0 ou superior

macOS 10.15+

Mac Catalyst 13.0+


tentou importar AVFoundation também .. ainda o mesmo erro.
Sia

- sim .. só agora tentei .. ainda o mesmo erro. Eu acho que "AVPictureInPictureController" não é suportado no tvOS13 (não tenho certeza).
sia

Não, não é, verifique minha resposta atualizada. Desculpe, eu pensei que ele dá o erro no iOS
Dimitrie-Toma Furdui

como por este link - developer.apple.com/documentation/avkit/... - aparência pode possível aplicá-la (novamente não tenho certeza)
sia

Inicialmente, certifique-se de definir a categoria de reprodução de áudio, geralmente no uso do AVPlayerViewController para reproduzir conteúdo de vídeo. O modo PIP será chamado automaticamente se o aplicativo desenvolvido entrar em segundo plano, mas apenas se satisfizer a condição de monitoração. O Player que estamos usando deve estar no modo de tela cheia, o vídeo deve estar sendo reproduzido nele e o PIP deve ser suportado pelo dispositivo e, finalmente, escrever o método delegado para restaurar a interface do usuário do player quando o usuário retornar do modo PIP. O vídeo deve estar sendo reproduzido nele e o PIP deve ser suportado pelo dispositivo. Fonte: shorturl.at/AEXY8
redhatvicky:

0

POSSIBILIDADE DE QUESTÕES DEVIDO AOS GAPS NA IMPLEMENTAÇÃO:

Experimente o AVPlayerViewController: Inicialmente, certifique-se de definir a categoria de reprodução de áudio, geralmente quando usamos um AVPlayerViewController para reproduzir conteúdo de vídeo. O modo PIP será automaticamente chamado se o aplicativo desenvolvido entrar em segundo plano, mas apenas se atender à condição mencionada abaixo. Primeiro, o Player que estamos usando deve estar no modo de tela cheia; o segundo é que devemos garantir que o vídeo seja Jogando nele e o terceiro é o PIP Deve ser suportado pelo dispositivo e, finalmente, o método delegate write para restaurar a interface do usuário do player quando o usuário retornar do modo Picture in Picture.

Implementação com _AVPictureInPictureController: Você pode encontrar um exemplo de trabalho no segmento abaixo. Como exibir AVPictureInPictureController?

Detalhamento do problema: para confirmar que o erro não declarado não se devia às lacunas na implementação e ao ambiente no Xcode, faça o download da fonte e adicione a pasta Sources dentro de outra pasta na sua área de trabalho.Adicione a pasta usando " Add Files to ... "e agora verifique dentro do xcode.

POSSIBILIDADE DE PROBLEMA DEVIDO A ATUALIZAÇÃO NO XCODE Tente corrigir pela abordagem 1 Inclua a classe explicitamente no cabeçalho e / ou no corpo - em vez do arquivo * .pch. Então esse erro pode desaparecer. A exclusão dos dados derivados também funciona de vez em quando. Você mudou a localização nas preferências recentemente por acaso. Alguns obtêm esse erro quando usam um ramdisk para dados derivados e depois retornam ao padrão. Esse é o caso mais irritante - pois faz com que esse erro apareça em quase todos os arquivos.

Tente corrigir pela abordagem 2 Às vezes, uma solução simples pode ajudar a excluir uma das linhas #import do arquivo pch e recompilar, que falhará conforme o esperado. Em seguida, coloque a linha excluída de volta, recompile e compile normalmente com todos os erros falsos.

POSSIBILIDADE DE PROBLEMA DURANTE O CACHE DE ERRO XCODE, SIGA AS ETAPAS ABAIXAS Limpe a compilação: Command-Option-Shift-K para limpar a pasta de compilação. Redefinir simulador: escolha iOS Simulator> Redefinir conteúdo e configurações Reinicie o Xcode Exclua sua pasta DerivedData em ~ / Library / Developer / Xcode / DerivedData Restart Computer

Exclua as pastas / var / de maneira muito direcionada. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Fonte: Como esvaziar caches e limpar todos os alvos Xcode 4 e erros mais recentes do Xcode Xcode "Uso de identificador não declarado", compila / executa muito bem Uso do identificador não declarado no Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Para criar um simples player de vídeo

Primeiro, você precisará implementar um player de vídeo básico no arquivo ViewController.m do seu projeto, da seguinte maneira:

#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 obter mais ajuda, acesse https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.