带有 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 似乎无法返回它们或这样做不一致(当我调用 getPhotosgroupTypes:'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 文件?

带有动态 url 的 react-native-video

如何使用带有钩子的 react-native-action-sheet

带有 redux 的 React-Native-Navigation V2 无法传递道具

带有 React Native 的 Expo PDF 查看器