콘텐츠로 건너뛰기

Flutter SDK 기본 통합 가이드

이 섹션에서는 Pushwoosh Flutter SDK를 애플리케이션에 통합하는 방법에 대한 정보를 제공합니다.

사전 요구 사항

Anchor link to

Pushwoosh Flutter SDK를 앱에 통합하려면 다음이 필요합니다:

통합 단계

Anchor link to

1. Pushwoosh Flutter SDK 종속성 추가

Anchor link to

pubspec.yaml 파일에 pushwoosh_flutter 패키지를 추가합니다:

pubspec.yaml
dependencies:
flutter:
sdk: flutter
# https://pub.dev/packages/pushwoosh_flutter 에서 최신 버전을 사용하세요
pushwoosh_flutter: ^[LATEST_VERSION]

pub.dev에서 최신 버전을 확인하세요.

그런 다음, 프로젝트의 루트 디렉터리에서 다음 명령을 실행하여 종속성을 설치합니다:

Terminal window
flutter pub get

패키지가 올바르게 설치되었는지 다시 확인합니다:

Terminal window
flutter pub deps | grep pushwoosh_flutter
# 예시 출력:
# ❯ flutter pub deps | grep pushwoosh_flutter
# └── pushwoosh_flutter 2.3.11

2. Flutter SDK 초기화

Anchor link to

main.dart 파일의 루트 컴포넌트에서:

  • pushwoosh_flutter 패키지를 가져옵니다.
  • Pushwoosh SDK를 초기화합니다.
  • 초기화 로직에서 registerForPushNotifications()를 호출하여 푸시 알림을 등록합니다.
main.dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
void main() async {
runApp(const MyApp());
Pushwoosh.initialize({
"app_id": "__YOUR_APP_ID__",
"sender_id": "__YOUR_FCM_SENDER_ID__"
});
Pushwoosh.getInstance.registerForPushNotifications();
}

여기서:

  • __YOUR_APP_ID__는 Pushwoosh 제어판의 애플리케이션 코드입니다.
  • __YOUR_FCM_SENDER_ID__는 Firebase 콘솔의 Firebase 프로젝트 번호입니다.

3. iOS 네이티브 설정

Anchor link to

3.1 기능(Capabilities)

Anchor link to

프로젝트에서 푸시 알림을 활성화하려면 특정 기능을 추가해야 합니다.

Signing & Capabilities 섹션에서 다음 기능을 추가합니다:

  • Push Notifications
  • Background Modes. 이 기능을 추가한 후 Remote notifications 확인란을 선택합니다.

Time Sensitive Notifications(iOS 15+)를 사용하려는 경우 Time Sensitive Notifications 기능도 추가하세요.

3.2 Info.plist

Anchor link to

Runner/Info.plist에서 __PUSHWOOSH_DEVICE_API_TOKEN__ 키를 Pushwoosh Device API 토큰으로 설정합니다:

info.plist
<key>Pushwoosh_API_TOKEN</key>
<string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>

3.3 메시지 전송 추적

Anchor link to

프로젝트에 Notification Service Extension 타겟을 추가해야 합니다. 이는 iOS에서 정확한 전송 추적 및 리치 미디어와 같은 기능에 필수적입니다.

네이티브 가이드의 단계에 따라 확장 타겟과 그 안에 필요한 Pushwoosh 코드를 추가하세요.

Notification Service Extension이 Flutter 프로젝트에 올바르게 통합되었는지 확인하려면 다음 Podfile 구성을 사용해야 합니다:

Podfile
target 'NotificationServiceExtension' do
use_frameworks!
use_modular_headers!
pod 'PushwooshXCFramework'
inherit! :search_paths
end

3.4 iOS Flutter 프로젝트용 종속성 설치

Anchor link to

iOS Flutter 프로젝트용 종속성을 설치하려면 다음 명령을 실행합니다:

Terminal window
flutter run

또는 터미널에서 ios 폴더로 이동하여 다음을 실행합니다:

Terminal window
pod install --repo-update

4. Android 네이티브 설정

Anchor link to

4.1 종속성 설치

Anchor link to

필요한 종속성과 플러그인이 Gradle 스크립트에 추가되었는지 확인합니다:

프로젝트 수준의 build.gradle 종속성에 Google Services Gradle 플러그인을 추가합니다:

android/build.gradle
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}

앱 수준의 build.gradle 파일에 플러그인을 적용합니다:

app/build.gradle
apply plugin: 'com.google.gms.google-services'

4.2 Firebase 구성 파일 추가

Anchor link to

프로젝트 디렉터리의 android/app 폴더에 google-services.json 파일을 넣습니다.

4.3 Pushwoosh 메타데이터 추가

Anchor link to

main/AndroidManifest.xml<application> 태그 안에 Pushwoosh Device API 토큰을 추가합니다:

AndroidManifest.xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

중요: Pushwoosh 제어판에서 올바른 앱에 토큰 액세스 권한을 부여해야 합니다. 자세히 알아보기

5. 프로젝트 실행

Anchor link to
  1. 프로젝트를 빌드하고 실행합니다.
  2. Pushwoosh 제어판으로 이동하여 푸시 알림을 보냅니다.
  3. 앱에서 알림을 볼 수 있습니다.

확장 통합

Anchor link to

이 단계에서는 이미 SDK를 통합했으며 푸시 알림을 보내고 받을 수 있습니다. 이제 핵심 기능을 살펴보겠습니다.

푸시 알림 이벤트 리스너

Anchor link to

Pushwoosh SDK에는 푸시 알림 처리를 위해 설계된 두 개의 이벤트 리스너가 있습니다:

  • onPushReceived 이벤트는 푸시 알림을 수신할 때 트리거됩니다.
  • onPushAccepted 이벤트는 사용자가 알림을 열 때 트리거됩니다.

애플리케이션 시작 시 SDK 초기화 직후에 이러한 이벤트 리스너를 설정해야 합니다:

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class PushwooshNotificationHandler {
void setupPushListeners(Pushwoosh pushwoosh) {
pushwoosh.onPushReceived.listen((event) {
print("Push received: ${event.pushwooshMessage.payload}");
});
pushwoosh.onPushAccepted.listen((event) {
print("Push accepted: ${event.pushwooshMessage.payload}");
});
}
}

사용자 구성

Anchor link to

개별 사용자 행동 및 선호도에 집중함으로써 개인화된 콘텐츠를 제공하여 사용자 만족도와 충성도를 높일 수 있습니다.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
void afterUserLogin(User user) {
// 사용자 ID 설정
Pushwoosh().setUserId(user.getId());
// 사용자 이메일 설정
Pushwoosh().setEmail(user.getEmail());
// SMS 번호 등록
// SMS 및 WhatsApp 번호는 E.164 형식(예: "+1234567890")이어야 하며 유효해야 합니다.
Pushwoosh().registerSmsNumber(user.getSmsNumber());
// WhatsApp 번호 등록
Pushwoosh().registerWhatsappNumber(user.getWhatsappNumber());
// Pushwoosh에 대한 태그로 추가 사용자 정보 설정
Pushwoosh().setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

태그는 사용자 또는 장치에 할당된 키-값 쌍으로, 선호도나 행동과 같은 속성을 기반으로 세분화하여 타겟 메시징을 가능하게 합니다.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class UpdateUser {
void afterUserUpdateProfile(User user) {
// 즐겨찾는 카테고리 목록 설정
Pushwoosh().setTags({
"favorite_categories": user.getFavoriteCategoriesList()
});
// 결제 정보 설정
Pushwoosh().setTags({
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
});
}
}

이벤트는 앱 내에서 특정 사용자 행동이나 발생을 추적하여 행동을 분석하고 해당 메시지나 작업을 트리거할 수 있는 것입니다.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
// 로그인 이벤트 추적
void afterUserLogin(User user) {
Pushwoosh().postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
void afterUserPurchase(Product product) {
// 구매 이벤트 추적
Pushwoosh().postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

ProGuard 사용

Anchor link to

따라서 다음과 같은 예외가 발생할 수 있습니다:

java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension

이 경우 두 가지 해결책이 있습니다:

  1. flutter build apk --no-shrink 명령을 사용하여 난독화 없이 코드를 컴파일합니다.
  2. 또는 ProGuard를 수동으로 활성화하고 필요한 규칙을 추가할 수 있습니다.

프로젝트에 ProGuard를 활성화하려면 build.gradle 파일에 다음 문자열을 추가합니다:

build.gradle
buildTypes {
release {
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}

그런 다음 android/app/proguard-rules.pro에 다음 규칙을 추가합니다.

proguard-rules.pro
#Pushwoosh Flutter
-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }
-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }

문제 해결

Anchor link to

통합 과정에서 문제가 발생하면 지원 및 커뮤니티 섹션을 참조하세요.