我在 iOS 18 上遇到问题:
我使用以下代码来获取照片套件中的视频路径:
[PHImageManager defaultManager] requestAVAssetForVideo:asset options:videoOptions resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
BOOL yesOrNo = [self isInCloudForInfo:info];
NSString *localPath = nil;
if (!yesOrNo && [asset isKindOfClass:[AVURLAsset class]]) {
localPath = [(AVURLAsset *)asset URL].absoluteString;
}
// Do something with localPath...
}]
当我使用
[[[NSFileManager defaultManager] fileExistsAtPath:localPath]
时,它返回NO。另外,带有 .duration
的 AVURLAsset
init 的 localPath
返回 0,但是可以通过 AVPlayer
播放此视频。
当我通过
localPath
得到localPath = [(AVURLAsset *)asset URL].relativePath
,并且[[NSFileManager defaultManager] fileExistsAtPath:localPath]
返回YES,但是AVURLAsset
无法播放视频,提示“您没有权限”。错误。
我该如何解决?
以下是我在 Google 上找到的一些可能相关的链接:
我必须使用
Photos Kit
吗?如果是这样,我需要做出重大改变来适应iOS18
https://medium.com/@mi9nxi/ios-18-phasset-url-from-requestavasset-09c67fd069f1
使用
relativePath
而不是 absoluteString
可以修复它。