콘텐츠로 건너뛰기

Expo SDK 기본 통합 가이드

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

전제 조건

Anchor link to

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

통합 단계

Anchor link to

1. 플러그인 설치

Anchor link to

Expo CLI 를 사용하여 Pushwoosh Expo 플러그인을 설치합니다.

Terminal window
expo install pushwoosh-expo-plugin

Pushwoosh React Native SDK 를 설치합니다.

Terminal window
npm install pushwoosh-react-native-plugin --save

2. 플러그인 속성 설정

Anchor link to

필요한 속성과 함께 플러그인을 플러그인 배열의 맨 앞에 추가합니다:

app.json/app.config.js
{
"expo": {
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}
}

여기서:

  • mode 는 APNs 환경 권한을 구성하는 데 사용됩니다. “Development” 또는 “production” 값을 사용할 수 있습니다.
  • PW_API_TOKEN, apiTokenPushwoosh Device API Token 입니다.

3. Pushwoosh 초기화

Anchor link to

애플리케이션의 루트 컴포넌트에서:

  • pushwoosh-react-native-plugin 플러그인을 가져옵니다.
  • Pushwoosh SDK 를 초기화합니다.
  • 초기화 로직에서 register() 를 호출하여 푸시 알림을 등록합니다.
index.tsx
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({
"pw_appid": "__YOUR_APP_ID__" ,
"project_number": "__YOUR_FCM_SENDER_ID__"
});
Pushwoosh.register();

여기서:

  • __YOUR_APP_ID__ 는 Pushwoosh Control Panel 의 애플리케이션 코드입니다.
  • __YOUR_FCM_SENDER_ID__ 는 Firebase Console 의 Firebase 프로젝트 번호입니다.

4. Android 네이티브 설정

Anchor link to

Firebase 구성 파일 추가:

  1. google-services.json 파일을 프로젝트의 루트 디렉터리에 복사합니다.
  2. googleServicesFile 속성을 google-services.json 파일의 경로로 설정하고 package 속성을 지정합니다:
app.json/app.config.js
"expo": {
"name": "sample",
"android": {
"package": "com.pushwoosh.sample",
"googleServicesFile": "./google-services.json"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}

5. iOS 네이티브 설정

Anchor link to

bundleIdentifier 속성을 ios 객체로 설정합니다:

app.json/app.config.js
"expo": {
"name": "sample",
"ios": {
"bundleIdentifier": "com.pushwoosh.sample"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}

6. 앱 사전 빌드

Anchor link to

prebuild 를 실행하여 각 플랫폼에 대한 네이티브 코드를 생성하고 종속성을 구성합니다:

Terminal window
npx expo prebuild

7. 프로젝트 실행

Anchor link to
  1. 프로젝트를 빌드하고 실행합니다:
Terminal window
npx expo run:android
  1. Pushwoosh Control Panel 로 이동하여 푸시 알림을 보냅니다.
  2. 앱에서 알림을 확인해야 합니다.

확장 통합

Anchor link to

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

푸시 알림 이벤트 리스너

Anchor link to

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

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

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

import { DeviceEventEmitter } from 'react-native';
import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler {
setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => {
console.warn("Push received: " + JSON.stringify(e));
});
DeviceEventEmitter.addListener("pushOpened", (e) => {
console.warn("Push opened:" + JSON.stringify(e));
});
}
}

사용자 구성

Anchor link to

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

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
afterUserLogin(user: User): void {
// Set user ID
Pushwoosh.setUserId(user.getId());
// Set user email
Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh
Pushwoosh.setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

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

import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser {
afterUserUpdateProfile(user: User): void {
// Set list of favorite categories
Pushwoosh.setTags({
"favorite_categories": user.getFavoriteCategoriesList()
});
// Set payment information
Pushwoosh.setTags({
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
});
}
}

이벤트는 앱 내에서 특정 사용자 행동 또는 발생으로, 행동을 분석하고 해당 메시지 또는 작업을 트리거하기 위해 추적할 수 있습니다.

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event
afterUserLogin(user: User): void {
Pushwoosh.postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
// Track purchase event
afterUserPurchase(product: Product): void {
Pushwoosh.postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

iOS 용 메시지 전달 추적

Anchor link to

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

확장 타겟과 필요한 Pushwoosh 코드를 추가하려면 네이티브 가이드의 단계를 따르십시오.

추가 플러그인 속성

Anchor link to
속성
기본값
설명
iOS 속성
Pushwoosh_LOG_LEVELINFOiOS 용 로그 레벨. 가능한 값: NONE, ERROR, WARN, INFO, DEBUG, NOISE
Android 속성
logLevelINFOAndroid 용 로그 레벨. 가능한 값: NONE, ERROR, WARN, INFO, DEBUG, NOISE
multiNotificationModetrue사용자에게 마지막 알림만 표시하려는 경우 false 로 변경할 수 있습니다.
icon-Android 용 사용자 지정 알림 아이콘 경로

문제 해결

Anchor link to

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

FCM 등록 오류: 토큰을 검색하지 못했습니다. Firebase 가 올바르게 구성되었습니까?
Anchor link to

Firebase googleServicesFile 속성이 Expo 구성 파일에 설정되어 있고 google-services.json 파일이 프로젝트의 루트 디렉터리에 추가되었는지 확인하십시오:

app.json/app.config.js
"expo": {
"name": "sample",
"android": {
"package": "com.pushwoosh.sample",
"googleServicesFile": "./google-services.json"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}
TypeError: null 의 ‘init’ 속성을 읽을 수 없습니다.
Anchor link to

기기에서 앱을 실행하려고 할 때 오류가 발생할 수 있습니다. 문제를 해결하려면 prebuild 단계를 완료했는지 확인하십시오. 이 단계는 각 플랫폼에 대한 네이티브 코드를 생성하고 종속성을 구성합니다.

Terminal window
npx expo prebuild