Media Log


MFMailComposeViewController 를 제대로 쓴 것 같은데 -O Linker (id) Error가 뜨신다면


일단 프로젝트에 MessageUI 프레임워크를 불러와야합니다!



프로젝트의 Tagets로 가서 Link Binary With Libraries로 간 다음 +를 클릭하여 MessageUI 프레임워크를 추가해야합니다.



Add 버튼을 클릭하여 추가시킵니다.


그 다음 .h 헤더 파일에 import와 Delegate를 제대로 해줘야합니다!





#import <UIKit/UIKit.h>

#import <MessageUI/MessageUI.h>  


@interface MailViewController : UIViewController <MFMailComposeViewControllerDelegate> {


}






그 다음 .m 파일에 추가할 것들입니다.





// 메일 컨트롤러 생성. 메일을 보낼 메소드 안에 넣거나 이대로 바로 호출해도 됩니다.

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

picker.mailComposeDelegate = self;


if ([MFMailComposeViewController canSendMail]) 

    // 메일을 전송할 있는 환경인지 확인.(메일이 설정에서 등록되어 있어야 합니다.)

{

    url = [url stringByReplacingOccurrencesOfString:@"mailto:" withString:@""];

    NSLog(@"MailUrl : %@",url);

    [picker setToRecipients:[NSArray arrayWithObjects:@"jehun7@hanmail.net", @"jehun7@gmail.com", nil]];  //받는 사람(배열의 형태로 넣어도 됩니다. )

    [picker setSubject:nil];  //제목

    [picker setMessageBody:nil isHTML:NO];     //내용

    [self presentModalViewController:picker animated:YES]; // Modal 형태로 창을 띄움니다.

}





//Delegate는 꼭 있어야 합니다.

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error

{

    //상태 결과 값에 따라 처리

    switch (result) {

        case MFMailComposeResultCancelled:  // 취소.

        {

            //알림 창을 띄움.

            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"Cancel" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];

            

            [alert show];

            [alert release];

            break;

        }

        case MFMailComposeResultFailed: // 실패.

        {

            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"Failed" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];

            

            [alert show];

            [alert release];

            

            break;

        }

        case MFMailComposeResultSent:   //성공.

        {

            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"Success" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];

            

            [alert show];

            [alert release];

        }

        default:

            break;

    }

    // Modal창을 닫습니다.

    [self dismissModalViewControllerAnimated:YES];

}









근데 openURL이 더 편합니다..


// 전화걸기

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://전화번호"]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://01012345678"]];



// 메일 쓰기

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://이메일주소"]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];


//SMS 쓰기

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://전화번호"]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://01012345678"]];


// 브라우저 실행

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://url주소"]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunesconnect.apple.com"]];




아니 왜 이렇게 짧아 


// 메일 쓰기
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://이메일주소"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];

// 메일 쓰기
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://이메일주소"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];





신고

submit

티스토리 툴바