즉, 개발자에게 이런 저런 기능이 있으면 좋겠다거나, 이럴때 문제가 발생해서 불편하다거나 하는 내용을 개발자에게 보낼 수 있는 기능은 있어야 합니다.
간단하게 MFMailComposeViewController를 사용해서, 기본으로 제공하는 이메일을 사용할 수 있습니다.
위와 같이 Framework은 MessageUI를 추가해 주시고, 사용하는 곳에서
#import <MessageUI/MessageUI.h>를 해주시면 사용할 수 있습니다.
메일 보내기 위해서, MFMailComposeViewController를 만들고, 메일에 들어갈 내용을 각각 넣어 줍니다.
NSString *iOSVersion = [[UIDevice currentDevice] systemVersion]; NSString *model = [[UIDevice currentDevice] model]; NSString *version = FGS_VERSION; NSString *build = FGS_BUILD; MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init]; mailComposer.mailComposeDelegate = self; [mailComposer setToRecipients:[NSArray arrayWithObjects: @"ask.davidbae@gmail.com",nil]]; [mailComposer setSubject:[NSString stringWithFormat: @"%@ V%@ (build %@) Support", NSLocalizedString(@"Family GoStop", @"App Name"),version,build]]; NSString *supportText = [NSString stringWithFormat:@"[Device: %@]\n[iOS Version:%@]\n",model,iOSVersion]; supportText = [supportText stringByAppendingString: NSLocalizedString(@"Please describe your problem or question.", @"")]; [mailComposer setMessageBody:supportText isHTML:NO]; [self presentViewController:mailComposer animated:YES completion:nil];
그리고, 호출하는 클래스에서 MFMailComposeViewControllerDelegate 프로토콜을 추가해 주시고, 아래 함수를 구현하면, 메일이 정상적으로 보내졌는지 확인이 가능합니다.
#pragma mark - MFMailComposeViewControllerDelegate - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [self dismissViewControllerAnimated:YES completion:nil]; /* enum MFMailComposeResult { MFMailComposeResultCancelled, MFMailComposeResultSaved, MFMailComposeResultSent, MFMailComposeResultFailed }; */ NSLog(@"Email Send Result: %d", result); if (result == MFMailComposeResultFailed) { NSLog(@"Support mail failed: Error Code:%d, %@", error.code, [error description]); } }
위에서 result값으로 보내 졌는지, 취소 되었는지, 실패 되었는지 확인이 가능합니다.
그리고, 메일을 보내기 위해서, Compose를 보여주기 전에, 실제 메일을 보낼 수 있는지 확인이 되어야 합니다.
그러기 위해서는, 클래스 메소드를 사용하여 확인이 가능합니다.
위 확인코드는 메일을 보내기 위한 버튼을 보여주기 전에 확인하여야 하고, 메일을 보낼 수 없는 경우, 사용자에게 메일 작성 화면을 보여주면 안됩니다.
왜? 어렵게 메일을 작성했는데, 메일 설정이 안되어 있어서 보낼 수 없으면, 허탈하겠죠.
이상입니다.
그리고, 메일을 보내기 위해서, Compose를 보여주기 전에, 실제 메일을 보낼 수 있는지 확인이 되어야 합니다.
그러기 위해서는, 클래스 메소드를 사용하여 확인이 가능합니다.
[MFMailComposeViewController canSendMail]
위 확인코드는 메일을 보내기 위한 버튼을 보여주기 전에 확인하여야 하고, 메일을 보낼 수 없는 경우, 사용자에게 메일 작성 화면을 보여주면 안됩니다.
왜? 어렵게 메일을 작성했는데, 메일 설정이 안되어 있어서 보낼 수 없으면, 허탈하겠죠.
이상입니다.
댓글 없음:
댓글 쓰기