问题标签 [phphotolibrary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
991 浏览

ios - iOS 9 PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:失败,错误代码 -1

我正在使用以下代码将视频保存到照片库。

此代码适用于iOS 8.x. 但它失败,错误代码为 -1 in iOS 9.x。错误是

对 iOS 9 中的这种行为有任何想法吗?任何帮助表示赞赏!谢谢

0 投票
0 回答
486 浏览

ios - 带有 PhotoFramework 资产的 Swift UICollectionView FlowLayout

我有一个缓存相机胶卷中所有照片的实现UICollectionViewControllerPHCachingImageManager

这适用于正常的收藏视图布局,即使有大约 2000 张照片。

但是,如果我实现UICollectionViewDelegateFlowLayout,应用程序在尝试获取每个图像资产项的图像大小时会崩溃。

UI滚动时触发缓存功能

日志记录表明集合视图试图在视图加载时立即获取所有照片资产的动态大小。我错过了什么吗?

0 投票
1 回答
1862 浏览

ios - In PHPhotoLibrary, photoLibraryDidChange doesn't notify all update

I'm using PHPhotoLibrary to save and fetch images for my application's album in iPhone.

When my album has a lot of images (about 5,000 still images), my application download 10 images from network, then save to Camera roll and add to my application's album.

At the same time, the application observe photoLibraryDidChange callback to know the added images, but it notify only 5 inserted images.

I finish my application by pushing HOME button and check Camera roll and my album in Photo App. There are correctly 5010 images.

Maybe photoLibraryDidChagne doesn't notify all changes ?

My code is like below.

I checked inserted asset by NSLog and Debugger and it truly updated 5 images.

There is no notification for the other 5 images.

0 投票
1 回答
2359 浏览

swift - 将文件从临时 url 复制到文档目录总是抛出。NSURLSessionDownloadTask

我正在使用运行良好的 NSURLSessionDownloadTask 下载文件。当我将图像或视频文件放入临时目录时。但我需要将其移动到永久 URL 才能将其放入照片库。我正在使用NSFileManager'scopyItemAtURL:没有任何成功。有什么理由会抛出吗?也许文件类型与文档目录不兼容?

这是打印语句。为了安全起见,我将文档目录中的应用程序包 ID 替换为$(AppId)

从 Optional 复制项目时出错(“/private/var/mobile/Containers/Data/Application/E8D9C365-15D2-40BD-B0B5-​​A000BEDA9F00/Library/Caches/com.apple.nsurlsessiond/Downloads/$(AppID)/CFNetworkDownload_CK3G3Z.tmp ") 到可选的("/var/mobile/Containers/Data/Application/E8D9C365-15D2-40BD-B0B5-​​A000BEDA9F00/Documents/shortMovie.mov")

0 投票
1 回答
878 浏览

swift - 在应用程序处于后台时访问 PHPhotoLibrary

我有一个NSURLDownloadTask在后台成功下载文件(大图像或视频文件)。我成功复制了 url 并调用此函数将我的 url 保存到照片库。如您所见,我想发送一个UILocalNotification通知用户他们的下载已完成。

我的问题是,PHPhotoLibrary.sharedPhotoLibrary().performChanges虽然应用程序在后台时会调用,但它的完成块不会。(但是它要求应用程序回到前台)我尝试注释掉抓取主线程以查看是否有帮助,但它没有。而且我不想在完成块之前发送本地通知,因为我想告诉用户下载成功/不成功的通知。

我想我可以在方法中发送通知NSURLDownloadDelegateTask。这将让用户知道文件已成功下载,但不知道将其保存到他们的照片是否成功。而且我不想告诉我的用户他们的下载成功,然后他们无法在他们的照片库中找到它。

这是我访问和修改照片库的代码。

0 投票
0 回答
826 浏览

ios - 使用 PHPhotoLibrary API 保存大量文件时出现异常

我的应用程序具有下载 tmp 文件夹中的许多照片和视频文件的功能,并使用 PHPhotoLibrary API 将它们保存在相机胶卷中。

问题是有时(概率在 10% 左右)在保存过程中会发生异常。

控制台中的错误消息是,

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“只能从 -[PHPhotoLibrary performChanges:completionHandler:] 或 -[PHPhotoLibrary performChangesAndWait:error:] 内部调用此方法”

我的代码如下:

我检查了类似的情况:

使用照片框架将图像保存到照片库

案例每次都崩溃,但我的代码很少崩溃。

不像我打电话的情况

'performChanges'

此外,我通过 NSLog 确认了 tmp 文件夹中视频文件的 fileURL,并且在'performChanges'块的外部和内部都可以。

fileURL=file:///private/var/mobile/Containers/Data/Application/C87F0F75-E128-4E9F-AE07-6B914939AC5D/tmp/video3.mp4

如果您能告诉我此问题的原因或解决方案,我将不胜感激。

0 投票
0 回答
836 浏览

ios - iOS:尝试使用 PHPhotoLibrary 保存图像时应用程序崩溃

我正在尝试使用 PHPhotoLibrary 保存照片。那张照片我作为临时文件保存在应用程序文件夹中。

下面是我的商店照片代码,使用 NSOperationQueue 运行后台

photoDic是一个字典,其中包含“路径”作为字符串,“大小”作为字符串,“专辑名称”作为数组。

在开始照片保存过程之前,我已经创建了所有客户相册。

并且完成处理程序中的委托函数仅用于删除应用程序文件夹中的临时文件。

但我在下面收到了一份崩溃报告:

在线崩溃:

似乎assetChangeRequest 占位符返回nil,我将这个nil 添加到一个数组中。

我正在尝试复制此问题,但如果 photoDic 带有 nil,我创建的 URL 将不正确,并且此函数将返回带有错误的失败处理程序;

如果 fileURL 不正确,并且我找不到该文件,此函数将返回失败处理程序,并显示无法完成操作错误,而不是使应用程序崩溃;

如果获取文件夹信息有问题,则永远不会调用崩溃行,因为我有 for 循环和 if 子句来处理空案例。

它永远不会在那条线上崩溃。

有没有什么情况placeholderForCreatedAsset会变成nil?或我未涵盖的任何其他情况可能会导致此问题并生成此崩溃报告?

0 投票
1 回答
697 浏览

ios - 处理 IOS 设置更改的正确方法

如果用户在开始时不允许访问相册,我会弹出“取消”和“设置”提示以供选择。如果他选择设置,它会将他带到设置页面,他可以在其中为应用程序启用相机和照片库。但是,一旦用户在设置中切换相机或照片库开关,我的应用程序就会崩溃,并显示“来自调试器的消息:由于信号 9 而终止”打印输出。以下是我的弹出窗口的代码

处理此问题的正确方法是什么,以便用户可以在切换开关后返回应用程序并开始选择照片?

0 投票
1 回答
2305 浏览

ios - 如何在混合代码 Objective-C/C++ 文件(.mm 文件)中使用 PHPhotoLibrary?

我正在尝试在 iOS 项目中使用 PHPhotoLibrary 类,但在我的混合代码 Objective-C/C++ 文件之一中需要它。我收到一个构建错误,显然所需的导入不正确。这里的 Apple 文档清楚地表明要使用 @import Photos,所以在我的构建设置中,我打开了“启用模块(C 和 Objective-C)”,并在我的其他导入中添加了 @import Photos。然而,这并没有解决 Xcode 对我使用 @import Photos 的反对意见。问题是这里的这个 SO 问题的帖子之一解释说,您只能在 .mm 文件中使用包含的 @import Photos 样式。

(我没有使用 Swift,只使用了 Objective-C,并且在一些文件中混合了 Objective-C 和 C++)

那么如何正确导入/包含在我的 .mm 文件中,以便构建我的 PHPhotoLibrary 代码?

0 投票
1 回答
932 浏览

swift2 - 如何在 iOS/Swift 2 上使用 PHPhotoLibrary 保存具有自定义文件名的照片?

我正在尝试使用 PHPhotoLibrary 保存具有自定义文件名的图像,但对我来说这是不可能的。图像的文件名始终为 IMG_XXX.JPG。我从照片程序中得到它的文件名。

我在 iPhone 中看不到文件名。