flutter – 푸시노티피케이션, onesignal

Push Notification 개요

Push Notification은 서버에서 클라이언트로 정보를 즉각 전달할 수 있는 알림 메커니즘입니다.

사용자 경험을 향상시키고 앱의 재방문율을 높이는 데 효과적입니다. 푸시 알림의 주요 특징은 사용자 디바이스가 네트워크에 연결된 상태에서 언제든 알림을 받을 수 있다는 점입니다.

주요 용도:

  • 중요 이벤트 알림 (예: 메세지 수신, 업데이트 알림)
  • 사용자 참여 증대 (예: 쿠폰, 프로모션)
  • 개인화된 경험 제공 (예: 추천 콘텐츠)

Firebase Cloud Messaging (FCM)

Firebase Cloud Messaging은 Google이 제공하는 무료 Push Notification 서비스로, 다음과 같은 특징을 가집니다.

  • 멀티 플랫폼 지원: Android, iOS, 웹에서 사용 가능.
  • 개인화 가능: 특정 사용자 또는 특정 조건에 맞는 사용자 그룹을 타겟팅하여 알림 전송.
  • 구성요소:
    • FCM 서버: 알림 전송을 위한 서버 구성.
    • 클라이언트 SDK: 앱 내 알림 수신 및 처리.

FCM 연동 방법:

  1. Firebase 프로젝트 생성 및 설정
    • Firebase Console에서 새 프로젝트 생성.
    • Android 및 iOS 앱을 Firebase 프로젝트에 등록
    • 앱스토어커넥트 apns 설정 및 파이베이스 프로젝트 FCM 설정
    • Google 서비스 설정 파일을 다운로드하여 앱에 추가
  2. Flutter 앱에 Firebase SDK 추가 dependencies: firebase_core: latest_version firebase_messaging: latest_version
  3. Firebase 초기화 및 메시지 설정 void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging messaging = FirebaseMessaging.instance; }
  4. 알림 핸들링
    • 앱에 FCM 코드 작성
    • Foreground, Background, Terminated 상태에서 푸시 알림을 수신하여 처리.
  5. 알림 발송
    • 서버에서 전송 API 코드 작성
    • Firebase Console 또는 서버 API를 통해 발송 가능.

OneSignal 개요

  • OneSignal은 강력한 푸시 알림 솔루션으로 모바일 푸시, 웹 푸시, 이메일, 인앱 메시지을 통해 사용자에게 메시지를 전달하는 플랫폼입니다.

OneSignal의 특징

  • 손쉬운 설정과 통합
  • 사용자 세분화
  • 알림 클릭률 추적
  • 실시간 데이터 분석 기능

OneSignal 계정 및 프로젝트 설정

OneSignal 계정 생성 및 기본 설정

  1. OneSignal 계정 생성: OneSignal 공식 웹사이트에서 회원가입 후 로그인합니다.
  2. 프로젝트 생성: 로그인 후 대시보드에서 ‘New App/Website’를 선택해 새로운 프로젝트를 추가합니다. 프로젝트 이름과 플랫폼(Android, iOS)을 지정하고, 기본 설정을 완료합니다.

앱 추가 및 API Key, App ID 생성 방법

  1. App ID: OneSignal 대시보드의 프로젝트 설정에서 App ID를 확인할 수 있습니다. 이 ID는 Flutter에서 초기화 시 필요하며, 앱 고유의 식별자로 사용됩니다.
  2. API Key: 설정 메뉴에서 REST API Key를 생성합니다. API Key는 백엔드에서 OneSignal API를 호출하거나 서버에서 특정 작업을 수행할 때 필요합니다.

Flutter와 OneSignal 연동하기

OneSignal SDK 설치 및 초기 설정

Flutter에서 OneSignal을 사용하기 위해서는 OneSignal Flutter SDK를 설치해야 합니다. 다음은 SDK 설치와 초기 설정 절차입니다.

  1. pubspec.yaml에 의존성 추가: dependencies: onesignal_flutter: latest_version 최신 버전의 onesignal_flutter 패키지를 pubspec.yaml 파일에 추가하고 flutter pub get 명령어로 설치합니다.
  2. Android 설정:
    • AndroidManifest.xml에 인터넷 사용 권한과 OneSignal 권한을 추가합니다.
    • gradle.properties 파일에서 Android API 33 이상을 타겟으로 하는 경우, 푸시 알림 채널을 지원하는 설정을 추가합니다.
  3. iOS 설정:
    • Runner/Info.plist 파일에 권한 요청을 위한 코드를 추가합니다. 사용자가 푸시 알림을 허용할 수 있도록 권한 메시지를 설정합니다.
    • OneSignal 공식문서 iOS 설정 가이드
      • [Xcode] add Notification Service Extension
        • Minimum Deployments 최소 11이상
      • [Xcode] add App Groups
      • [Podfile] add OneSignal SDK to the OneSignalNotificationServiceExtension
      • [iOS Folder] add OneSignalNotificationServiceExtension Code

OneSignal Flutter 패키지 추가 및 초기화 코드 예제

OneSignal Flutter SDK를 초기화하려면 앱의 main.dart 파일에서 초기화 코드를 작성해야 합니다.

import 'package:onesignal_flutter/onesignal_flutter.dart';

void main() {
  runApp(MyApp());
  
  OneSignal.initialize("YOUR_ONESIGNAL_APP_ID");
  
	OneSignal.Notifications.requestPermission(true);
}

필수 권한 설정 (iOS 및 Android별 권한 요구 사항)

각 플랫폼에서는 푸시 알림 권한을 별도로 설정해야 합니다.

  • iOS 권한: iOS에서는 사용자 동의를 받아야 푸시 알림을 발송할 수 있습니다. XCode에서 해당설정을 해주거나 Info.plist 파일에 아래와 같은 항목을 추가하면 됩니다. <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> <key>UIBackgroundModes</key> <array> <string>fetch</string> <string>remote-notification</string> </array>
  • Android 권한: Android에서는 AndroidManifest.xml에 다음과 같은 권한을 추가해야 합니다. <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

FCM과 OneSignal 비교

기능FCMOneSignal
플랫폼 지원Android, iOS, 웹Android, iOS, 웹, sms, 이메일
타겟팅 기능제한적세분화된 타겟팅 가능
분석 기능기본 제공고급 분석, AB 테스트 지원
가격무료
  • 100만 MAU까지 무료 | 일부 기능 유료
  • 1만 MAU까지 무료
  • 10만 MAU까지 9$ |

푸시 알림 기능

기본 푸시 알림 발송 예제

OneSignal 대시보드에서 직접 알림을 작성하고 타겟을 지정한 후 발송할 수 있습니다.

사용자 세그먼트 및 타겟팅 설정 방법

OneSignal은 다양한 조건을 기반으로 사용자를 세분화하여 특정 그룹에만 푸시 알림을 보낼 수 있습니다. 대시보드에서 다음과 같은 방법으로 사용자 세그먼트를 설정할 수 있습니다.

  • 사용자 행동 기반: 앱 내 특정 행동을 수행한 사용자에게만 알림을 보냅니다.
  • 사용자 속성 기반: 예를 들어, 특정 지역의 사용자, 특정 OS 사용자를 선택할 수 있습니다.
  • 태그 기반: 사용자 프로필에 특정 태그를 추가하여 특정 조건에 맞는 사용자만을 타겟으로 설정할 수 있습니다.

개인화된 알림 (사용자 속성 및 태그 사용)

개인화된 알림은 사용자의 특성에 따라 맞춤화된 메시지를 제공하여 참여도를 높일 수 있습니다. OneSignal에서는 tags를 사용해 특정 속성을 기반으로 메시지를 맞춤화할 수 있습니다.

// 사용자에게 태그 추가
OneSignal.User.addTag("user_type", "premium");

인앱 메시지 구현 및 활용 방법

인앱 메시지는 사용자가 앱 내에서 특정 페이지를 볼 때마다 화면에 표시되는 알림을 말합니다. OneSignal을 사용하면 대시보드에서 인앱 메시지를 설정할 수 있으며, 앱 내의 특정 위치 또는 상황에서 사용자에게 유용한 정보를 표시할 수 있습니다.