Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결
어제 17일째는 k0mach1씨의 Firebase Authentication의 idToken을 서버 인증에 사용자 서비스의 User와 연결한 이야기(iOS편)이었습니다.
가정 기능
다음과 같은 앱 중 하나의 기능을 생각해보십시오.
 
빠는거리
다음 복합 요소로 빠졌습니다 ...
iPhoneのストレージ最適化 (Optimize iPhone Strage) 켜기 PHImageManagerMaximumSize 지정 iCloud 설정에서 iPhone의 스토리지 최적화(Optimize iPhone Strage)를 켭니다.
다음
設定 > iCloud > 写真에서 스토리지 최적화 옵션을 선택한 경우입니다.
이 경우 요청 옵션에 다음을 지정하여 iCloud의 사진을 가져올 수도 있습니다.
let requestOptions = PHImageRequestOptions()
requestOptions.isNetworkAccessAllowed = true
그러나 이것만으로는 다음 조건에서 문제가 여전히 문제가 남아 있습니다.
(반대로 말하면, 이것만으로 취득할 수 있던 조건도 있었습니다.)
원래의 사이즈로 취득하기 위한 사이즈 정수 PHImageManagerMaximumSize 를 지정
PHImageManagerMaximumSize에는 다음 설명이 포함되어 있습니다.// Size to pass when requesting the original image or the largest rendered image available (resizeMode will be ignored)
@available(iOS 8.0, *)
public let PHImageManagerMaximumSize: CGSize
원래 이미지를 얻으려면 원래 크기를 모르기 때문에이 상수를 지정하십시오.
무엇이 문제였는가
이번과 같은 요건을 제대로 채우기 위해서는
isNetworkAccessAllowed = true 뿐만이 아니라, progressHandler 의 처리도 필요했습니다.이번에 당황한 원인은
CollectionView에서 표시하고 있는 이미지와 같이, 사이즈를 지정해 리퀘스트하면 취득할 수 있고, 썸네일상은 취득되어 있는 것처럼 보여 버렸던 점
입니다.
그리고, 스토리지의 최적화의 대상이 되고 있는 화상은, 오리지날로 로드해 볼 때까지, 외관상은 판별할 수 없습니다.
답변
그래서 해결 된 코드입니다.
let requestOptions = PHImageRequestOptions()
requestOptions.version = .current
requestOptions.deliveryMode = .highQualityFormat
requestOptions.isSynchronous = false
requestOptions.isNetworkAccessAllowed = true
requestOptions.progressHandler = { [weak self](progress, error, stop, info) in
    print("Loading image from iCloud")
}
PHImageManager.default().requestImage(for: photoAsset.asset,
                                      targetSize: PHImageManagerMaximumSize,
                                      contentMode: .aspectFill,
                                      options: requestOptions,
                                      resultHandler: { [weak self](image, _) in
                                          guard let image = image else { return }
                                          self?.selectedImage = image
})
 요약
시간의 제약 때문에, 은근하게 밖에 문서를 조사할 수 없었습니다만, Photos.framework 에 대한 설명은 적고, stack overflow에서도 소량의 정보 밖에 발견되지 않았습니다.
이 부분을 다루는 문서를 알고 계시다면 꼭 알려주세요.
 참고
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
let requestOptions = PHImageRequestOptions()
requestOptions.version = .current
requestOptions.deliveryMode = .highQualityFormat
requestOptions.isSynchronous = false
requestOptions.isNetworkAccessAllowed = true
requestOptions.progressHandler = { [weak self](progress, error, stop, info) in
    print("Loading image from iCloud")
}
PHImageManager.default().requestImage(for: photoAsset.asset,
                                      targetSize: PHImageManagerMaximumSize,
                                      contentMode: .aspectFill,
                                      options: requestOptions,
                                      resultHandler: { [weak self](image, _) in
                                          guard let image = image else { return }
                                          self?.selectedImage = image
})
시간의 제약 때문에, 은근하게 밖에 문서를 조사할 수 없었습니다만,
Photos.framework 에 대한 설명은 적고, stack overflow에서도 소량의 정보 밖에 발견되지 않았습니다.이 부분을 다루는 문서를 알고 계시다면 꼭 알려주세요.
참고
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)