콘텐츠로 건너뛰기

Flutter SDK 기본 통합 가이드

이 섹션에는 Pushwoosh Flutter SDK 를 애플리케이션에 통합하는 방법에 대한 정보가 포함되어 있습니다.

전제 조건

Anchor link to

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

통합 단계

Anchor link to

1. Pushwoosh Flutter SDK 종속성 추가

Anchor link to

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

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 패키지를 import 합니다.
  • 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 Control Panel 의 애플리케이션 코드입니다.
  • __YOUR_FCM_SENDER_ID__ 는 Firebase Console 의 Firebase 프로젝트 번호입니다.

3. iOS 네이티브 설정

Anchor link to

3.1 기능

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 Token 으로 설정합니다:

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

3.3 메시지 전송 추적

Anchor link to

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

확장 타겟 및 필요한 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 스크립트에 추가되었는지 확인합니다:

Google Services Gradle 플러그인을 프로젝트 수준 build.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

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

4.3 Pushwoosh 메타데이터 추가

Anchor link to

main/AndroidManifest.xml 에서 <application> 태그 내에 Pushwoosh Device API Token 을 추가합니다:

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

중요: Pushwoosh Control Panel 에서 토큰이 올바른 앱에 액세스할 수 있도록 해야 합니다. 자세히 알아보기

5. 프로젝트 실행

Anchor link to
  1. 프로젝트를 빌드하고 실행합니다.
  2. Pushwoosh Control Panel 로 이동하여 푸시 알림을 보냅니다.
  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

통합 프로세스 중에 문제가 발생하면 지원 및 커뮤니티 섹션을 참조하십시오.