2016-11-22 8 views
0

PHAsset을 서버에 업로드하려고합니다. 이제 내 PHAs 세트는 사진이나 비디오가 될 수 있습니다. 로컬 장치에있는 PHAssets에 대해이 작업을 성공적으로 수행 할 수 있습니다. 그러나 PHAsset이 로컬 장치에없고 대신 iCloud에있는 경우에는 어떻게됩니까?iCloud에서 PHAsset 업로드 (즉, 로컬 장치에 없음)

iCloud에서 서버로 직접 업로드 할 수 있습니까? 아니면 먼저 로컬 장치로 다운로드 한 다음 서버에 작업을 업로드해야합니까?

또한 누군가가이 작업을 수행 할 수 있다면 감사하게 생각합니다.


업데이트 : 네트워크 액세스가 iCloud 이미지 양식을 다운로드하도록 허용 할 때 아래 오류가 발생합니다.

{ 

    PHImageErrorKey = "Error Domain=CloudPhotoLibraryErrorDomain Code=1000 \"Error fetching asset with identifier: AUXxudUWWzHheX1dXyRDgXpZN5ty\" UserInfo={NSLocalizedDescription=Error fetching asset with identifier: AUXxudUWWzHheX1dXyRDgXpZN5ty, NSUnderlyingError=0x7fb00a5e9480 {Error Domain=CKErrorDomain Code=6 \"Fetching asset failed\" UserInfo={NSLocalizedDescription=Fetching asset failed, NSUnderlyingError=0x7fb00a511600 {Error Domain=CKInternalErrorDomain Code=2022 \"Fetching asset failed\" UserInfo={NSLocalizedDescription=Fetching asset failed, NSUnderlyingError=0x7fb00a5b6fc0 {Error Domain=com.apple.mmcs Code=16 \"(null)\"}}}}}}"; 

    PHImageResultDeliveredImageFormatKey = 0; 

    PHImageResultIsInCloudKey = 1; 

    PHImageResultWantedImageFormatKey = 20002; 

} 

답변

2

모바일 앱 내에 저작물을 다운로드 한 다음 서버에 업로드해야합니다. Sandboxing 및 기타 개인 정보 보호 & 보안 규칙 때문에 iCloud에서 직접 업로드 할 수 있다고 생각하지 않습니다.

YES 인 경우, 요청 된 리소스 데이터가에 저장되지 않은 : 당신이 PHCachingImageManager & requestImageForAsset을 사용하는 경우

, 당신은 documentation에 설명 된대로 아이 클라우드는 데이터를 가져올 수있다 PHImageRequestOptions 특별한 옵션 networkAccessAllowed를 지정해야 로컬 장치에서 사진이 iCloud에서 해당 데이터를 다운로드합니다.

참고 : 당신은 아이 클라우드 문서 서비스 및 설정의 기본 컨테이너와 iCloud에 자격을 사용하도록 설정해야합니다. 자세한 내용은 여기 Enabling CloudKit in Your App을 참조하십시오. 내가 볼 수 있듯이, 당신이 networkAccessAllowed = true

예를 들어, 할 수있는이 같은 자산 관리자에 대한 설정 옵션을 사용할 때 필요한 것 :

PHImageRequestOptions *requestOptions = [PHImageRequestOptions new]; 
requestOptions.synchronous = NO; 
requestOptions.resizeMode = PHImageRequestOptionsResizeModeFast; 
requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; 
requestOptions.networkAccessAllowed = YES; 

다음 요청 데이터를

[self.cachingImageManager requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:requestOptions resultHandler:^(UIImage * _Nullable resultImage, NSDictionary * _Nullable info) { 
... 
}]; 

이 경우 요청한 애셋을 처리 할 수있는 resultHandler으로 전화하기 전에 iCloud가 문서 선택기에서 데이터를 가져 오는 방법을 확인할 수 있습니다.

+0

먼저 자산을 다운로드 한 다음 서버에 업로드하는 것이 좋습니다. 이런 이미지를 얻으려고했지만 'Fetching asset failed'오류가 발생합니다. 업데이트 된 질문을 참조하십시오. –

+0

앱이 iCloud에 액세스 할 수 없기 때문에 애셋 요청이 실패합니까? 나는 Apple 개발자 프로그램에 등록하지 않았습니다. –

+0

예. iCloud 문서 서비스와 함께 iCloud 권한을 활성화하고 기본 컨테이너를 설정해야합니다. 자세한 내용은 여기 [응용 프로그램에서 CloudKit 사용] (https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/CloudKit 설정 및 클라우드 설정 및 클라우드 키 HTML보기 구성)을 참조하십시오. 알 수 있듯이'networkAccessAllowed = true'를 사용할 때 필요합니다. – dive