带有React Native RCTCameraRoll

时间:2018-01-10 04:19:30

标签: react-native

我使用react-native 0.51并且希望为我的应用的iOS用户提供访问相机胶卷的功能,其中包括存储在iCloud Photo Library中的内容(即只有本地存储的缩略图),就像在原生iOS中一样照片应用

文档很薄,但我希望这是常用的功能。但是,当我跑:

 CameraRoll.getPhotos({
   first: 100,
   assetType: 'All',
 })

我使用page_info.has_next_page == false返回了一页结果(比我的照片库少很多)。有趣的是,所有提供的图像记录都具有isStored属性(始终为true)。

目前RCTCameraRoll是否支持iCloud Photo Library?如果没有,您是否有任何替代方案可以获得良好的体验?

理想情况下,Android支持可在同一个库中使用。

1 个答案:

答案 0 :(得分:1)

没有。检查库的源代码(https://github.com/facebook/react-native/tree/master/Libraries/CameraRoll),可以看到除了RCTPhotoLibraryImageLoader之外,该库是使用不推荐使用的现有支持iCloud的照片库的AssetsLibrary API(自iOS 9开始)编写的。 RCTPhotoLibraryImageLoader已更新为现代Photos API(https://developer.apple.com/documentation/photos?language=objc)以允许下载云存储的URI,但getPhotos似乎无法返回它们或不一致(当我调用时) getPhotos groupTypes:'All' new Vue({ el: '#app', data: { questions: [ ['test1.1', 'test1.2'], ['test2.1', 'test2.2'] ] } }),某些结果似乎是对某些远程缓存内容的引用,但我的大多数iCloud存储的照片根本没有出现。

另一种选择是react-native-photos-framework,这里可以找到仅限iOS的Photos API: https://github.com/olofd/react-native-photos-framework

另一种可能对某些人有用的替代方案是一个组件,它是本机图像选择器和相机对象的包装器: https://github.com/react-community/react-native-image-picker 这是相对严格的(没有多选,有限的外观控制),但作为交换,一些棘手的细节是为你处理的,例如下载iCloud内容。