Push Notification 개요
Push Notification은 서버에서 클라이언트로 정보를 즉각 전달할 수 있는 알림 메커니즘입니다.
사용자 경험을 향상시키고 앱의 재방문율을 높이는 데 효과적입니다. 푸시 알림의 주요 특징은 사용자 디바이스가 네트워크에 연결된 상태에서 언제든 알림을 받을 수 있다는 점입니다.
주요 용도:
- 중요 이벤트 알림 (예: 메세지 수신, 업데이트 알림)
- 사용자 참여 증대 (예: 쿠폰, 프로모션)
- 개인화된 경험 제공 (예: 추천 콘텐츠)
Firebase Cloud Messaging (FCM)
Firebase Cloud Messaging은 Google이 제공하는 무료 Push Notification 서비스로, 다음과 같은 특징을 가집니다.
- 멀티 플랫폼 지원: Android, iOS, 웹에서 사용 가능.
- 개인화 가능: 특정 사용자 또는 특정 조건에 맞는 사용자 그룹을 타겟팅하여 알림 전송.
- 구성요소:
- FCM 서버: 알림 전송을 위한 서버 구성.
- 클라이언트 SDK: 앱 내 알림 수신 및 처리.
FCM 연동 방법:
- Firebase 프로젝트 생성 및 설정
- Firebase Console에서 새 프로젝트 생성.
- Android 및 iOS 앱을 Firebase 프로젝트에 등록
- 앱스토어커넥트 apns 설정 및 파이베이스 프로젝트 FCM 설정
- Google 서비스 설정 파일을 다운로드하여 앱에 추가
- Flutter 앱에 Firebase SDK 추가
dependencies: firebase_core: latest_version firebase_messaging: latest_version
- Firebase 초기화 및 메시지 설정
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging messaging = FirebaseMessaging.instance; }
- 알림 핸들링
- 앱에 FCM 코드 작성
- Foreground, Background, Terminated 상태에서 푸시 알림을 수신하여 처리.
- 알림 발송
- 서버에서 전송 API 코드 작성
- Firebase Console 또는 서버 API를 통해 발송 가능.
OneSignal 개요
- OneSignal은 강력한 푸시 알림 솔루션으로 모바일 푸시, 웹 푸시, 이메일, 인앱 메시지을 통해 사용자에게 메시지를 전달하는 플랫폼입니다.
OneSignal의 특징
- 손쉬운 설정과 통합
- 사용자 세분화
- 알림 클릭률 추적
- 실시간 데이터 분석 기능
OneSignal 계정 및 프로젝트 설정
OneSignal 계정 생성 및 기본 설정
- OneSignal 계정 생성: OneSignal 공식 웹사이트에서 회원가입 후 로그인합니다.
- 프로젝트 생성: 로그인 후 대시보드에서 ‘New App/Website’를 선택해 새로운 프로젝트를 추가합니다. 프로젝트 이름과 플랫폼(Android, iOS)을 지정하고, 기본 설정을 완료합니다.
앱 추가 및 API Key, App ID 생성 방법
- App ID: OneSignal 대시보드의 프로젝트 설정에서 App ID를 확인할 수 있습니다. 이 ID는 Flutter에서 초기화 시 필요하며, 앱 고유의 식별자로 사용됩니다.
- API Key: 설정 메뉴에서 REST API Key를 생성합니다. API Key는 백엔드에서 OneSignal API를 호출하거나 서버에서 특정 작업을 수행할 때 필요합니다.
Flutter와 OneSignal 연동하기
OneSignal SDK 설치 및 초기 설정
Flutter에서 OneSignal을 사용하기 위해서는 OneSignal Flutter SDK를 설치해야 합니다. 다음은 SDK 설치와 초기 설정 절차입니다.
- pubspec.yaml에 의존성 추가:
dependencies: onesignal_flutter: latest_version
최신 버전의onesignal_flutter
패키지를 pubspec.yaml 파일에 추가하고flutter pub get
명령어로 설치합니다. - Android 설정:
- AndroidManifest.xml에 인터넷 사용 권한과 OneSignal 권한을 추가합니다.
gradle.properties
파일에서 Android API 33 이상을 타겟으로 하는 경우, 푸시 알림 채널을 지원하는 설정을 추가합니다.
- 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
- [Xcode] add Notification Service Extension
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 비교
기능 | FCM | OneSignal |
---|---|---|
플랫폼 지원 | Android, iOS, 웹 | Android, iOS, 웹, sms, 이메일 |
타겟팅 기능 | 제한적 | 세분화된 타겟팅 가능 |
분석 기능 | 기본 제공 | 고급 분석, AB 테스트 지원 |
가격 | 무료 |
- 100만 MAU까지 무료 | 일부 기능 유료
- 1만 MAU까지 무료
- 10만 MAU까지 9$ |
푸시 알림 기능
기본 푸시 알림 발송 예제
OneSignal 대시보드에서 직접 알림을 작성하고 타겟을 지정한 후 발송할 수 있습니다.
![](https://lucasblog.kr/wp-content/uploads/2024/12/image-4-1024x740.png)
사용자 세그먼트 및 타겟팅 설정 방법
OneSignal은 다양한 조건을 기반으로 사용자를 세분화하여 특정 그룹에만 푸시 알림을 보낼 수 있습니다. 대시보드에서 다음과 같은 방법으로 사용자 세그먼트를 설정할 수 있습니다.
- 사용자 행동 기반: 앱 내 특정 행동을 수행한 사용자에게만 알림을 보냅니다.
- 사용자 속성 기반: 예를 들어, 특정 지역의 사용자, 특정 OS 사용자를 선택할 수 있습니다.
- 태그 기반: 사용자 프로필에 특정 태그를 추가하여 특정 조건에 맞는 사용자만을 타겟으로 설정할 수 있습니다.
개인화된 알림 (사용자 속성 및 태그 사용)
개인화된 알림은 사용자의 특성에 따라 맞춤화된 메시지를 제공하여 참여도를 높일 수 있습니다. OneSignal에서는 tags
를 사용해 특정 속성을 기반으로 메시지를 맞춤화할 수 있습니다.
// 사용자에게 태그 추가
OneSignal.User.addTag("user_type", "premium");
인앱 메시지 구현 및 활용 방법
인앱 메시지는 사용자가 앱 내에서 특정 페이지를 볼 때마다 화면에 표시되는 알림을 말합니다. OneSignal을 사용하면 대시보드에서 인앱 메시지를 설정할 수 있으며, 앱 내의 특정 위치 또는 상황에서 사용자에게 유용한 정보를 표시할 수 있습니다.