Flutter 푸시 알림

이성대·2024년 2월 6일
0

https://pub.dev/packages/awesome_notifications

푸시 알림

  • 공용냉장고 관리 앱을 만드는 프로젝트를 진행하던 중 냉장고에 보관되는 음식의 남은 보관기간이 임박했을 때 푸시알림을 주는 기능을 넣을까 생각했다. 그런데 Firestore와 연동해서 하려니 너무 복잡하고 남은 날짜를 계산해서 알림을 줘야하기 때문에 더 어려운 상황이었다.
  • 그래서 패키지 중에 awesome notifications 라는 패키지에서 정해진 날짜에 푸시알림을 생성하는 기능이 있어 이를 이용해보려 한다.
 Future<void> myNotifyScheduleInDays({
  required int daysFromNow,
  required String username,
  required String refrigeName,
  required String title,
  required String msg,
  bool repeatNotif = false,
}) async {
  var nowDate = DateTime.now().add(Duration(days: daysFromNow, seconds: 5));
  await AwesomeNotifications().createNotification(
    schedule: NotificationCalendar(
      preciseAlarm: true,
      //weekday: nowDate.day,
      day: nowDate.day,
      minute: 5,
      second: nowDate.second,
      //allowWhileIdle: true,
    ),
    // schedule: NotificationCalendar.fromDate(
    //    date: DateTime.now().add(const Duration(seconds: 10))),
    content: NotificationContent(
      id: -1,
      channelKey: 'alerts',
      wakeUpScreen: true,
      category: NotificationCategory.Reminder,
      title: '${Emojis.food_bowl_with_spoon} $refrigeName에 $title',
      body: '$username 님, $msg',
      largeIcon: 'asset://assets/images/lemon.png',
      roundedLargeIcon: true,
      autoDismissible: false,
      notificationLayout: NotificationLayout.BigPicture,
      //actionType : ActionType.DismissAction,
      color: Colors.black,
      backgroundColor: Colors.black,
      // customSound: 'resource://raw/notif',
      payload: {'actPag': 'myAct', 'actType': 'food', 'username': username},
    ),
    actionButtons: [
      NotificationActionButton(
        key: 'NOW',
        label: '확인',
      ),
      // NotificationActionButton(
      //   key: 'LATER',
      //   label: 'btnAct2',
      // ),
    ],
  );
}
  • 우선, 위 매서드로 푸시 알림을 생성하면 'Alerts'라는 채널키로 푸시알림을 만들게 되고 daysFromNow 변수를 통해 며칠 뒤에 알림을 보낼 것인지 결정할 수 있다.
  • 그래서 보관할 음식을 등록할 때 이 메서드를 함께 실행하면서 냉장고의 보관기간에 따라 위 변수에 값을 정해서 넣으면 그 해당일이 되면 앱이 foreground이거나 background 상태일 때 알림을 받을 수 있게 된다.
  • 앱이 종료된 상태일 때는 알림이력이 저장되어 있다가 앱이 켜지면 실행된다고 하는데, 아직 확인되지는 않았고 다른 써드파티 알림과 연동해 사용할 수는 없다고 되어 있으나 나중에 시도해볼 필요는 있는 것 같다.
  • 앱 종료 상태 시 푸시알림을 받을 수 있는 다른 방법을 찾아서 시도해볼 예정이다.

0개의 댓글