11

我有一个在 iOS 和 tvOS 上运行的小应用程序,我在 UIView 中显示视频。它确实支持 iOS 12 和 tvOS 12。现在想为 tvOS 显示 PIP,因此尝试使用 AVPictureInPictureController 会给出错误“使用未声明的标识符 'AVPictureInPictureController ”。

即使部署目标设置为 tvOS 13。在 Xcode 中,功能 -> 背景模式 -> 启用“音频、Airplay 和画中画”。这个基本代码给出了错误。

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

缺少任何其他设置或我需要做的其他事情吗?

谢谢

4

3 回答 3

1

tvOS 不支持,如 Apple文档中所述

SDK

iOS 9.0+

macOS 10.15+

Mac 催化剂 13.0+

于 2019-11-14T10:13:06.623 回答
-1

由于实施差距导致问题的可能性:

使用 AVPlayerViewController 的体验: 最初确定我们设置了播放音频类别,一般当我们使用 AVPlayerViewController 播放视频内容时。如果开发的应用程序进入后台,将自动调用 PIP 模式,但前提是满足下面提到的条件,第一个是我们正在使用的播放器应该是全屏模式,第二个是我们应该确保视频应该是在其中播放,第三个是 PIP 应该由设备支持,最后编写委托方法以在用户从画中画模式返回时恢复我们的播放器 UI。

使用 _AVPictureInPictureController 实现:您可以在下面的线程中找到一个工作示例。 如何显示 AVPictureInPictureController?

深入研究问题: 为了确认未声明的错误不是由于实现中的差距,而是由于 Xcode 中的 environmnet,下载源代码,然后将 Sources 文件夹添加到工作区的另一个文件夹中。使用“添加文件夹”将文件添加到...”选项,现在在 xcode 中进行验证。

由于 XCODE 中的刷新而导致问题的可能性 尝试通过方法修复 1 将类显式包含在标题和/或正文中 - 而不是 *.pch 文件。那么这个错误可能会消失。有时也可以删除派生数据。您最近是否更改了偏好中的位置。有些人在将 ramdisk 用于派生数据然后返回默认值时会出现此错误。这是最烦人的情况——因为它会导致这个错误出现在几乎每个文件中。

尝试通过方法 2 修复 有时,一个简单的解决方案可能有助于从 pch 文件中删除 #import 行并重新编译,这将按预期失败。然后将删除的行放回原处,重新编译并正常编译,所有错误错误都消失了。

XCODE 错误缓存出现问题的可能性,请按照以下步骤清理构建:Command-Option-Shift-K 清理构建文件夹。重置模拟器:选择 iOS 模拟器 > 重置内容和设置 重新启动 Xcode 删除 ~/Library/Developer/Xcode/DerivedData 中的 DerivedData 文件夹 重新启动计算机

以非常有针对性的方式删除 /var/folders。rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

来源: 如何清空缓存和清理所有目标 Xcode 4 及更高版本 Xcode“使用未声明的标识符”错误,编译/运行得很好 在 Xcode 9.0 中使用未声明的标识符 https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_standard_player

于 2019-11-21T11:15:55.543 回答
-1

创建一个简单的视频播放器

首先,您需要在项目的 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

于 2019-11-21T13:44:24.913 回答