Отримання помилки при спробі використання AVPictureInPictureController в iOS 13 або tvOS 13


10

У мене є невелике додаток, яке працює на iOS та tvOS, де я показую відео в UIView.It підтримує iOS 12 та tvOS 12. Тепер хочу показати PIP для tvOS, отже, намагаючись використовувати AVPictureInPictureController, видає помилку "Використання незадекларованого ідентифікатора" AVPictureInPictureController ”.

Навіть незважаючи на те, що ціль розгортання встановлена ​​на tvOS 13. У Xcode, можливості -> Фоновий режим -> увімкнено "Аудіо, Airplay та Picture In Picture". Цей базовий код дає помилку.

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

Будь-які інші налаштування відсутні або щось інше мені потрібно зробити?

Дякую

Відповіді:


0

Не підтримується в tvOS, як зазначено в документації Apple

SDK

iOS 9.0+

macOS 10.15+

Mac Catalyst 13.0+


спробував імпортувати AVFoundation також .. все одно та сама помилка.
sia

- так .. просто зараз спробував .. все одно та сама помилка. Я думаю, що "AVPictureInPictureController" не підтримується на tvOS13 (не впевнений).
sia

Ні, це не так, перевірити мою оновлену відповідь. Вибачте, я подумав, що це дає помилку на iOS
Dimitrie-Toma

за цим посиланням - developer.apple.com/documentation/avkit/… - виглядає, можливо, це можливо реалізувати (знову не впевнений)
sia

Спочатку переконайтесь, що ви встановили категорію відтворення аудіо, як правило, використовуйте AVPlayerViewController для відтворення відеовмісту. Режим PIP автоматично буде викликатись, якщо розроблена програма переходить у фоновий режим, але лише якщо вона відповідає умові спостереження. Програвач, який ми використовуємо, повинен знаходитись у повноекранному режимі, відео має відтворюватися в ньому, а PIP має підтримуватися пристроєм і, нарешті, записати метод делегата для відновлення інтерфейсу програвача, коли користувач повернеться з режиму PIP. Відео повинно відтворюватися в ньому, а PIP повинен підтримуватися пристроєм. джерело: shorturl.at/AEXY8
redhatvicky

0

МОЖЛИВОСТІ ВИПУСКІВ, ПІД ЧАС ДАЛІВ У ВИКОНАВАННІ:

Експериментуйте з AVPlayerViewController: Спочатку переконайтесь, що ми встановлюємо категорію відтворення аудіо, як правило, коли ми використовуємо AVPlayerViewController для відтворення відеовмісту. Режим PIP автоматично запускається, якщо розроблений додаток переходить у фоновий режим, але лише якщо він відповідає наведеній нижче умові. Перший - програвач, який ми використовуємо, повинен бути в повноекранному режимі, другий - ми повинні переконатися, що відео має бути Гра в ньому і третій - PIP. Він повинен підтримуватися пристроєм і останньою методикою делегування запису, щоб відновити інтерфейс нашого програвача, коли користувач повернеться зі Зображення у режимі зображення.

Імплементація за допомогою _AVPictureInPictureController: робочий приклад ви можете знайти в нижній темі. Як відобразити AVPictureInPictureController?

Розгортання проблеми. Для того, щоб підтвердити незадекларовану помилку, не було через прогалини у впровадженні, а це було пов’язано із середовищем мережі в Xcode, завантажте джерело та додайте папку "Джерела" всередині іншої папки у робочій області. Додайте папку за допомогою " Додайте файли до ... "і перевірте всередині xcode.

МОЖЛИВОСТІ ВИПУСКУ ДЛЯ ПОВЕРНЕННЯ В XCODE Спробуйте виправити за підходом 1 Включіть клас явно в заголовок та / або тіло - замість файлу * .pch. Тоді ця помилка може піти. Також видалення отриманих даних працює раз у раз. Ви нещодавно змінили місце розташування в налаштуваннях. Деякі отримують цю помилку, коли використовують рамковий диск для отриманих даних, а потім повертаються до стандартних умов. Це найприємніший випадок - оскільки це призводить до появи цієї помилки майже в кожному файлі.

Спробуйте виправити підхід 2 Колись просте рішення може допомогти видалити одну з рядків #import з pch-файлу та перекомпілювати, яка не вдасться, як очікувалося. Потім поверніть вилучений рядок назад, перекомпілювали і він скомпілювався нормально з усіма помилковими помилками.

МОЖЛИВОСТЬ ВИПУСКУ ЗА КАШИ ПОМИЩЕННЯ XCODE, ДОСЛІДЖУЙТЕ ВИПУСКІ КРОКИ Очищення складання : Command-Option-Shift-K, щоб очистити папку збірки. Скинути симулятор: виберіть iOS Simulator> Скидання вмісту та налаштувань Перезавантажте Xcode Видаліть папку DerivedData у ~ / Бібліотека / Розробник / Xcode / DerivedData Перезавантажте комп'ютер

Видаліть / var / папки дуже цільовим чином. rm -rf "$ (getconf DARWIN_USER_CACHE_DIR) /org.llvm.clang/ModuleCache"

Джерело: Як очистити кеші та очистити всі цілі. Xcode 4 та пізніші Xcode Помилки, використання / незазначений ідентифікатор Xcode "", компілює / виконує просто чудово Використання незадекларованого ідентифікатора в Xcode 9.0 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player


0

Створити простий відеоплеєр

Спочатку вам потрібно буде впровадити базовий відеоплеєр у файл ViewController.m вашого проекту, наприклад:

#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

Для подальшої допомоги пройдіть https://help.apple.com/xcode/mac/8.0/#/dev51a648b07

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.