2012-08-11 2 views
-2

안녕하세요 아래 코드를 사용하여 메일 콤포넌트에 스크린 샷을 첨부하고 있습니다. 실제 장치에서이 작업을 확인할 수있는 장치가 없습니까?iOS의 메일 콤포넌트에 스크린 샷을 첨부하는 방법

-(void)launchMailAppOnDevice 
{ 
    /*Take a SnapShot of current screen*/ 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    NSData * imageData = UIImageJPEGRepresentation(image, 1.0); 

    NSString *recipients = @"mailto:[email protected][email protected]\"\"&subject=blah!!blah!!"; 

    NSString *body = @"&body=blah!!blah!!"; 

    NSString *email = [NSString stringWithFormat:@"%@%@%@", recipients, body, imageData]; 
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]]; 
} 
+1

"mailto"는 어디에서 사용하셨습니까? 왜'MFMailComposeViewController'를 사용하고'addAttachmentData : mimeType : fileName :'을 사용하여 스크린 샷을 첨부 파일로 추가할까요? –

+0

이것이 실제로 작동하는지 보려면 관심이 있습니다 ... 사용하지 않았지만 재미있는 방법입니다. – Dustin

답변

6

마지막 5 줄이 잘못되었습니다. 당신은 가능성이 가장 높은 MFMailComposeViewController 클래스를 사용하려면 :

MFMailComposeViewController *mcv = [[MFMailComposeViewController alloc] init]; 

[mcv setSubject:@"blah!!blah!!"]; 
[mcv setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 
[mcv setMessageBody:@"Blah!! 'tis the body!" isHTML:NO]; 
[mcv addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"Screenshot.jpg"]; 

[someViewController presentModalViewController:mcv animated:YES]; 
[mcv release]; 

P. S : 프로젝트에 또한 #import <MessageUI/MessageUI.h> MessageUI 프레임 워크를 추가해야합니다.

P. p. 실제 장치에서 테스트하는 것이 중요하지만 실제 코드를 작성하기 전에 가이드와 설명서를 읽는 것이 더 중요합니다.

+2

+1의 p.p.s/답변 정확도. –

+0

@NSPostWhenIdle 감사합니다! –

1

당신은 추가 할 수 있습니다 :

NSData *imageData = UIImagePNGRepresentation(image); 
[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"fileName"]; 

당신이 흔한 :,하지만 난 그게 얼마나 중요한지 충분히 강조 수 없습니다 당신이 대신 사용해야하는하는 MFMailComposeViewController을 사용하려는 경우 실제 장치에서 항상 응용 프로그램을 테스트하십시오.

+0

** 참고 : ** H2CO3에는이를 수행하는 방법에 대한 더 나은 설명이 있습니다. –

+0

+1 신속하고 관련성있는 답변을 위해 :) –

+0

@ H2CO3 투표 꺼져 ​​주셔서 감사합니다! –