4

编辑从标题中删除的版本,但这是从 iOS 8.1 开始的

我有一个我已经构建的应用程序,它将播放来自用户 Photos.app 的视频。当我在 8.0.2 设备上安装应用程序时,我从 [PHAsset fetchAssetsWithMediaType:options:] 调用中返回视频列表没有问题,但是当我在 8.1 设备上安装完全相同的代码时,我返回了 0 个视频。有没有人遇到过这个?8.1 是否改变了我们应该再次从 Photos.app 访问照片/视频的方式?

PHFetchOptions *options = [[PHFetchOptions alloc] init];
PHFetchResult *videos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options];

任何帮助,将不胜感激。

更新

修改了我的代码以使用 PHAssetCollection 调用来尝试获取专辑,我取得了一些成功,现在在两个版本上,我都得到了 6 个视频中的 3 个(不幸的是,每次都不是相同的 3 个)。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchKeyAssetsInAssetCollection:collection[0] options:nil];

编辑#2

好的,我刚刚在上面的代码中看到了我的错误,我将把它留给那些和我做同样愚蠢事情的人。我的视频获取线要求“关键”资产,这就是为什么我只得到 3 个。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];
4

2 回答 2

3

自我回答,所以如果其他人遇到这个问题,他们可能会有答案。

所以我仍然不确定为什么我的原始代码在升级到 8.1 后无法工作,但我在编辑#2 中的代码通过从另一个方向解决了这个问题。

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];
于 2014-10-30T18:44:12.913 回答
0

显然两者

PHFetchResult *videos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:options];

PHFetchResult *collection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
PHFetchResult *videos = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

在 10.1 中工作,但仅当视频位于照片应用程序中时。视频应用程序中的家庭(和其他类型)视频不可迭代。

因此,您最近不能使用 iTunes 将视频上传到设备上,您必须使用 AirDrop 才能让视频最终出现在照片而不是视频应用中。

于 2017-05-31T14:02:51.930 回答