728x90
앱에서 사용자에게 SMS를 보낼 때, 메세지 내용과 함께 보내는 기능을 개발중이다.
openURL~ 로 SMS를 보낼 수 있지만, 이 방법으로는 메세지 내용을 담아 보낼 수는 없는 듯 하다.
그래서 MFMessageComposeViewController를 사용해 SMS를 전송하도록 구현했다.
붙이는 곳 코드가 Objective-C.. 라서 옵씨로.. 코드를 추가했지만,
추후에 리팩토링하면서 필요하니까 Swift로도 정리해놓겠땅
1. MessageUI Framework 추가하기
project > target에 MessageUI Framework을 추가해준다.
2. 사용하는 곳에서 Framework import 해주기
objective-C 에서는 <~.h> 헤더 추가, swift에서는 Framework import 해준다.
3. 코드 추가!
recipients : SMS 수신자 번호 정보(리스트에 여러개 담을 수 있음)
body : SMS 내용 컨텐츠
MFMessageComposeViewController * smsVC = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText]) {
// SMS 수신자(여러명 가능)
smsVC.recipients = [NSArray arrayWithObjects:phoneNumber, nil];
// SMS 내용
smsVC.body = message;
// SMS 전송 후 처리가 필요할 때 사용(ex. 전송 완료 메세지 등)
smsVC.messageComposeDelegate = self;
// present!
[self presentViewController:smsVC animated:true completion:nil];
}
let smsVC = MFMessageComposeViewController()
smsVC.recipients = ["010어쩌구번호"]
smsVC.body = "SMS 내용내용"
smsVC.delegate = self
self.present(smsVC, animated: true)
이렇게 원하는 정보를 담아서 전송까지 테스트 해볼 수 있는데,
전송 완료되거나 취소했을 때 멈춘다.
뷰에서 작업이 완료된 후의 처리를 앱에서 해주기 위해서 delegate 셋팅 해주고, 아래 method로 처리해줄 수 있다.
- (void) messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"문자 전송이 취소되었습니다.");
break;
case MessageComposeResultFailed:
NSLog(@"문자 전송 실패!");
break;
case MessageComposeResultSent:
NSLog(@"문자 전송이 완료되었습니다.");
break;
default:
break;
}
[controller dismissViewControllerAnimated:true completion:nil];
}
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
switch result {
case .cancelled:
print("문자 전송이 취소되었습니다.")
break
case .sent:
print("문자 전송이 완료되었습니다.")
break
case .failed:
print("문자 전송 실패!")
break
@unknown default:
break
}
controller.dismiss(animated: true)
}
728x90
'iOS' 카테고리의 다른 글
[iOS] R.Swift 사용해보기 (0) | 2022.12.16 |
---|---|
[iOS] Swift Package Manager (0) | 2022.11.09 |
[iOS] 키보드 툴바 만들기 (0) | 2022.09.19 |
UIColor Extension(Hex값 그대로 사용하기) (0) | 2022.08.03 |
[Build 에러] Cycle in "APP" building could produce unreliable results 에러 처리방법 (0) | 2022.08.03 |