带有 React Native RCTCameraRoll 的 iCloud 照片库
Posted
技术标签:
【中文标题】带有 React Native RCTCameraRoll 的 iCloud 照片库【英文标题】:iCloud Photo Library with React Native RCTCameraRoll 【发布时间】:2018-01-10 04:19:29 【问题描述】:我正在使用 react-native 0.51,并希望为我的应用程序的 ios 用户提供对相机胶卷的访问权限,其中包括存储在 iCloud 照片库中的内容(即仅本地存储的缩略图),就像在本机 iOS 照片应用程序中一样.
文档很薄,但我希望这是通常需要的功能。但是,当我运行时:
CameraRoll.getPhotos(
first: 100,
assetType: 'All',
)
我返回了一页结果(比我的照片库少很多),page_info.has_next_page == false
。有趣的是,所有提供的图像记录都有一个isStored
属性(并且总是true
)。
目前 RCTCameraRoll 是否支持 iCloud 照片库?如果没有,是否有任何替代方案让您有很好的体验?
理想情况下,android 支持将在同一个库中提供。
【问题讨论】:
【参考方案1】:没有。检查库 (https://github.com/facebook/react-native/tree/master/Libraries/CameraRoll) 的源代码,可以看到除了 RCTPhotoLibraryImageLoader 之外,该库是使用已弃用的 AssetsLibrary API(自 iOS 9 起)编写的,该 API 早于现代 iCloud 启用的照片库。 RCTPhotoLibraryImageLoader 已更新为现代照片 API (https://developer.apple.com/documentation/photos?language=objc) 以允许下载云存储的 URI,但 getPhotos
似乎无法返回它们或这样做不一致(当我调用 getPhotos
时groupTypes:'All'
,一些结果似乎是对一些远程缓存内容的引用,但我的大部分 iCloud 存储照片根本没有出现)。
另一种选择是 react-native-photos-framework,可以在此处找到仅适用于 iOS 的照片 API: https://github.com/olofd/react-native-photos-framework
另一个可能适用于某些人的替代方法是一个组件,它是原生图像选择器和相机对象的包装器: https://github.com/react-community/react-native-image-picker 这是相对严格的(没有多选,对外观的控制有限),但作为交换,一些棘手的细节会为您处理,例如处理下载 iCloud 内容。
【讨论】:
以上是关于带有 React Native RCTCameraRoll 的 iCloud 照片库的主要内容,如果未能解决你的问题,请参考以下文章
React-native - 带有 flexbox 的 Pinterest 风格
React-native:如何在 React-native 中使用(和翻译)带有 jsx 的 typescript .tsx 文件?
如何使用带有钩子的 react-native-action-sheet