티스토리 뷰
반응형
Flutter에서 Twilio API를 사용하여 SMS를 보내는 방법을 설명해 드리겠습니다.
Flutter는 Dart 기반이므로, Twilio의 HTTP API를 호출해야 합니다.
🔹 1. Twilio 계정 설정
Twilio를 사용하려면 API 키를 발급받아야 합니다.
- Twilio 가입 및 로그인
- Account SID, Auth Token 확인 (Twilio Console에서 확인 가능)
- Twilio에서 제공하는 발신 전화번호(From Number) 발급
🔹 2. Flutter에서 Twilio API 호출
Flutter에서는 http 패키지를 사용하여 Twilio의 REST API를 호출하면 됩니다.
✅ http 패키지 설치
먼저, pubspec.yaml에 http 패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
http: ^0.13.5 # 최신 버전 확인 후 사용
이후 flutter pub get을 실행하여 패키지를 설치합니다.
✅ Twilio API를 호출하는 Dart 코드
import 'dart:convert';
import 'package:http/http.dart' as http;
class TwilioService {
final String accountSid = "your_account_sid"; // Twilio에서 제공
final String authToken = "your_auth_token"; // Twilio에서 제공
final String twilioNumber = "+1234567890"; // Twilio에서 발급한 발신번호
final String myPhoneNumber = "+8210XXXXXXXX"; // 수신할 본인의 번호
Future sendSms(String message) async {
final String url = "https://api.twilio.com/2010-04-01/Accounts/$accountSid/Messages.json";
final response = await http.post(
Uri.parse(url),
headers: {
"Authorization":
"Basic ${base64Encode(utf8.encode('$accountSid:$authToken'))}",
"Content-Type": "application/x-www-form-urlencoded"
},
body: {
"From": twilioNumber,
"To": myPhoneNumber,
"Body": message
},
);
if (response.statusCode == 201 || response.statusCode == 200) {
print("SMS 전송 성공!");
} else {
print("SMS 전송 실패: ${response.body}");
}
}
}
void main() {
TwilioService().sendSms("Flutter에서 Twilio로 문자 전송 테스트!");
}
✅ 설명
- http.post()를 사용하여 Twilio의 REST API를 호출.
- Basic Authentication 방식으로 Account SID와 Auth Token을 base64 인코딩하여 인증.
- From은 Twilio에서 발급받은 발신 번호, To는 수신자 번호(+82 한국 국가 코드 포함).
- Body에 보낼 메시지를 입력.
🔹 3. Twilio API 테스트 (Flutter 실행 없이 먼저 확인)
API가 정상적으로 작동하는지 먼저 확인하고 싶다면, Postman 또는 Curl을 사용하여 Twilio API를 직접 호출해볼 수 있습니다.
✅ Curl로 Twilio 테스트
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/your_account_sid/Messages.json" \
--data-urlencode "Body=Flutter에서 Twilio SMS 테스트!" \
--data-urlencode "From=+1234567890" \
--data-urlencode "To=+8210XXXXXXXX" \
-u your_account_sid:your_auth_token
✅ 이 명령어가 성공하면, Flutter에서도 정상적으로 실행될 가능성이 높습니다.
🔹 4. Twilio SMS를 Flutter UI와 연동
Flutter UI에서 버튼을 눌러 SMS를 보낼 수 있도록 간단한 UI를 추가할 수도 있습니다.
✅ Flutter 버튼 UI + Twilio SMS 전송
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class TwilioService {
final String accountSid = "your_account_sid";
final String authToken = "your_auth_token";
final String twilioNumber = "+1234567890";
final String myPhoneNumber = "+8210XXXXXXXX";
Future sendSms(String message) async {
final String url = "https://api.twilio.com/2010-04-01/Accounts/$accountSid/Messages.json";
final response = await http.post(
Uri.parse(url),
headers: {
"Authorization":
"Basic ${base64Encode(utf8.encode('$accountSid:$authToken'))}",
"Content-Type": "application/x-www-form-urlencoded"
},
body: {
"From": twilioNumber,
"To": myPhoneNumber,
"Body": message
},
);
if (response.statusCode == 201 || response.statusCode == 200) {
print("SMS 전송 성공!");
} else {
print("SMS 전송 실패: ${response.body}");
}
}
}
void main() {
runApp(SmsApp());
}
class SmsApp extends StatelessWidget {
final TwilioService twilioService = TwilioService();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Flutter Twilio SMS")),
body: Center(
child: ElevatedButton(
onPressed: () {
twilioService.sendSms("Flutter에서 Twilio로 문자 전송 테스트!");
},
child: Text("SMS 보내기"),
),
),
),
);
}
}
✅ 설명
- ElevatedButton을 눌렀을 때 Twilio API를 호출하여 문자 메시지를 보냄.
- TwilioService를 활용하여 비동기적으로 API 요청을 처리.
- Flutter UI와 Twilio SMS API를 쉽게 연동 가능!
🔹 5. Twilio 대체 API (한국 전용)
Twilio는 한국에서 사용할 때 무료 계정에서는 발신번호 제한이 있습니다.
네이버 클라우드 SMS API를 사용하면 한국 통신사(KT, SKT, LG U+)에 직접 문자 전송 가능합니다.
👉 Flutter에서 네이버 클라우드 SMS API 사용법을 원하면 요청하세요!
🔹 결론
방법 장점 단점
Twilio API | 사용이 간편하고 글로벌 지원 | 한국 무료 계정은 발신번호 제한 |
네이버 클라우드 SMS | 한국 통신사 직접 지원 | API Key 필요 |
📌 추천:
- 해외 번호 지원이 필요하다면 → Twilio API
- 한국 번호로 직접 문자 보내려면 → 네이버 클라우드 SMS API
이제 Flutter에서도 Twilio API를 사용하여 SMS를 보낼 수 있습니다! 🚀
반응형
'[실전] 플러터 (Flutter)' 카테고리의 다른 글
[Flutter&Firebase연동 공포앱개발] 무서운 이야기 어플 만들기 (0) | 2025.01.08 |
---|---|
[Flutter 앱개발 기초] 플러터 기본 위젯 및 함수 연결하기 (2) | 2025.01.07 |
[Flutter&Firebase 커뮤니티 앱개발] (최종) 04. flutter 커뮤니티 앱 코드 작성 및 빌드 (0) | 2024.11.24 |
[Flutter&Firebase 커뮤니티 앱개발] 03. flutter 프로젝트와 연동한 firebase 프로젝트 생성하기 (0) | 2024.11.21 |
[Flutter&Firebase 커뮤니티 앱개발] 02. firebase_cli 설치 (4) | 2024.11.20 |