앱간 이미지 객체 공유 방법
카메라롤의 URL을 사용하지 않고 직접 이미지 path를 통해 공유하는 방법이다.
[호출자]
버튼등을 통해 보내기 이벤트가 발생될 경우 아래의 코드로 전송할 파일을 저장하고 path를 지정해 준다.
생성된 path를 UIDocumentInteractionController를 통해 해당 패스에 맞는 앱의 리스트를 출력시켜준다.
NSData * data = UIImageJPEGRepresentation(self.importedImage.image, 1);
NSArray * pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * docDirectory = [pathArray objectAtIndex:0];
NSString * resultPath = [NSString stringWithFormat:@"%@/%@", docDirectory, @"test.jpg"];
[[NSFileManager defaultManager] createFileAtPath:resultPath contents:data attributes:nil];
NSURL* tempURL = [NSURL fileURLWithPath:resultPath];
UIDocumentInteractionController * docu = [UIDocumentInteractionController interactionControllerWithURL:tempURL];
self.document = docu;
self.document.delegate = self;
[self.document presentPreviewAnimated:YES];
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string></string>
</array>
<key>CFBundleTypeName</key>
<string>JPG</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSItemContentTypes</key>
<array>
<string>public.jpeg</string>
</array>
</dict>
마지막으로 해당 앱의 앱델리게이트 내에서 전달받은 URL을 처리하는 내용을 추가하면 된다.
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
SALog(@"URL:%@ \n", url);
return [self handleURLScheme:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
SALog(@"URL:%@ \n App:%@\n Anno:%@\n", url, sourceApplication, annotation);
return [self handleURLScheme:url];
}
'iOS' 카테고리의 다른 글
UITableView Section 헤더 고정 현상 방지 (0) | 2012.05.03 |
---|---|
IOS 설정바로가기 URL (0) | 2012.04.19 |
UIActionSheet 버튼 타이틀 동적 추가 (0) | 2012.04.05 |
스레드 동작시 performSelector 주의점 (0) | 2012.03.05 |
UITableViewCell 다루기 (0) | 2012.02.06 |