ALAssetLibrary ,它仅在某些设备上的所有照片中显示部分照片

Posted

技术标签:

【中文标题】ALAssetLibrary ,它仅在某些设备上的所有照片中显示部分照片【英文标题】:ALAssetLibrary , it only shows partial number of photos in All Photos on some devices 【发布时间】:2016-02-23 07:04:44 【问题描述】:

我曾经使用 ALAsset,它适用于大多数用户(大约 100K)的 ios7~iOS9。 但有些用户抱怨它只在 i6 设备、ios8/ios9 上显示部分照片。 (可能有 1% 的人有这个问题,我不确定。)

我有 i6 ios9 设备,但我的设备无法显示同样的问题。用户表示 App 仅显示过去两个月的照片。它是怎么发生的?

对于他们的设备,他们没有相机胶卷相册,但 mime 有。我不确定它是否会导致问题。如何解决这个问题呢 ?我应该从 iOS8 更改为 PHAsset Photos。

【问题讨论】:

可能与this question 相似?还检查this answer,可能会有所帮助.. 我不认为这是同一个问题,但它是相关的。当设备有相机胶卷相册时,“相机胶卷”相册组中的所有照片都可以正确加载。但是对于没有相机胶卷的设备,部分照片无法加载到“所有照片”相册中。设备升级到ios9.2.1。无论如何,我不知道解决方案。我使用 alassetgroup 的通用实现。 NSUInteger groupTypes = ALAssetsGroupAll; [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:listGroupBlock failureBlock:failureBlock]; 【参考方案1】:

我找到了根本原因,即 ALAssetLibrary 无法读取 iOS8/iOS9 的某些照片。这是因为启用了 iCloud 并选择了针对存储进行优化。

https://support.apple.com/en-us/HT204264 在 iPhone、iPad 或 iPod touch 上,轻点“设置”>“iCloud”>“照片”或“设置”>“照片与相机”,然后选择存储设置。打开优化 [设备] 存储。

因此,ALAssetLibrary 无法读取这些上传到 iCloud 的照片。供用户解决。 1.他可以使用照片应用程序编辑照片旋转和旋转后保存。并且 ALAssetLibrary 可以再次读取。 2.禁用优化设备存储并连接wifi和电源。照片将从 iCloud 拉回设备。

对于编程方面,我认为唯一的方法是使用 iOS8/iOS9 的 Photos/PHAsset。照片框架可以从 iCloud 读取缩略图和原件。

您还有其他解决方案吗?

【讨论】:

以上是关于ALAssetLibrary ,它仅在某些设备上的所有照片中显示部分照片的主要内容,如果未能解决你的问题,请参考以下文章

仅在某些设备上出现核心数据标量错误

iPhone 应用程序仅在 3G 上的发布模式下崩溃

我想为 setVisibility 上的视图设置动画,但它仅第一次工作

Fabric/Crashlytics NoClassDefFoundError 仅在某些设备上

仅在设备旋转时旋转某些 UI 元素

SQLiteAssetHelper NullPointerException 仅在某些设备上