반응형
안녕하세요! 실시간 미세먼지 & 날씨 알림 앱 개발 시리즈의 일곱 번째 글입니다.
지난 글에서는 새로고침 버튼과 자동 데이터 갱신 기능을 구현했죠. 이번에는 사용자에게 푸시 알림을 보내는 기능을 추가해보겠습니다!
🎯 목표
- 특정 조건(미세먼지 '나쁨' 이상)일 때 푸시 알림 전송
- flutter_local_notifications 패키지를 활용한 로컬 알림 구현
🔔 1. flutter_local_notifications 설치하기
🔹 pubspec.yaml
dependencies:
flutter:
sdk: flutter
flutter_local_notifications: ^16.1.0
설치 후:
flutter pub get
🔹 Android 설정
AndroidManifest.xml에 권한 추가:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
⚙️ 2. 알림 초기화 설정
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> initializeNotifications() async {
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
main() 함수에서 초기화:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await initializeNotifications();
runApp(const MyApp());
}
📣 3. 조건에 따라 알림 보내기
이제 미세먼지 수치가 일정 기준 이상이면 알림을 보내보겠습니다.
void checkAndNotify(DustInfo dust) async {
if (dust.pm10 > 80 || dust.pm25 > 50) {
await flutterLocalNotificationsPlugin.show(
0,
'미세먼지 주의!',
'현재 미세먼지 수치가 높습니다. (${dust.pm10}/${dust.pm25})',
const NotificationDetails(
android: AndroidNotificationDetails(
'high_dust_channel',
'미세먼지 경고',
importance: Importance.high,
priority: Priority.high,
),
),
);
}
}
그리고 getDust() 또는 _refreshData() 이후에 이 함수를 호출하면 됩니다:
checkAndNotify(dust);
📱 알림 테스트 시 유의사항
- 에뮬레이터보다 실제 기기에서 테스트하는 것이 더 확실합니다
- Android 13 이상에서는 앱 설치 후 알림 권한을 직접 허용해야 합니다
✅ 마무리
이번 포스팅에서는 미세먼지 수치가 높을 때 사용자에게 알림을 보내는 기능을 구현해보았습니다!
이제 단순한 데이터 보기 앱을 넘어, 실제 사용자에게 경고해주는 유용한 앱으로 발전하고 있어요 😊
📌 다음 예고
[APP-00001] #8 – 앱 디자인 마무리 & Play 스토어 배포 준비하기 🎨🚀
다음 글에서는 전체 앱 디자인을 다듬고, 앱 아이콘 및 스플래시 화면 설정, 간단한 배포 과정까지 정리할 예정입니다. 그럼 다음 포스팅에서 뵈어요!
반응형