메인 콘텐츠로 건너뛰기

개요

Android 푸시 알림은 Android 앱에서 지속적인 사용자 참여와 유지를 촉진하는 데 필수적입니다. 사용자에게 실시간 업데이트, 알림 및 개인화된 메시지를 직접 전달하여 앱의 전반적인 사용자 경험과 끈끈함을 향상시킵니다. OneSignal은 Firebase Cloud Messaging(FCM)을 활용하지만 이 가이드에 표시된 것처럼 훨씬 더 많은 유연성과 기능을 제공하도록 설계되었습니다.

요구 사항

  • “Google Play 스토어(서비스)“가 설치된 Android 7.0+ 기기 또는 에뮬레이터.
  • Android Studio(설정 지침은 Android Studio Meerkat 사용).
  • 구성된 OneSignal 앱 및 플랫폼.

OneSignal 앱 및 플랫폼 구성

푸시 알림에 필요한 설정 OneSignal로 푸시 알림 전송을 시작하려면 먼저 지원하는 모든 플랫폼(Apple (APNs), Google (FCM), Huawei (HMS) 및/또는 Amazon (ADM))으로 OneSignal 앱을 구성해야 합니다.
조직에 이미 OneSignal 계정이 있는 경우 관리자 역할로 초대를 요청하여 앱을 구성하세요. 그렇지 않은 경우 무료 계정에 가입하여 시작하세요.
단일 OneSignal 앱에서 여러 플랫폼(iOS, Android, Huawei, Amazon, Web)을 관리할 수 있습니다.
1

앱 만들기 또는 선택

  • 기존 앱에 플랫폼을 추가하려면 OneSignal 대시보드에서 설정 > 푸시 및 인앱으로 이동합니다.
  • 처음부터 시작하려면 New App/Website를 클릭하고 프롬프트를 따릅니다.

새 앱 만들기를 보여주는 예제.

2

플랫폼 설정 및 활성화

  • 앱 및 조직에 대해 명확하고 인식 가능한 이름을 선택합니다.
  • 구성하려는 플랫폼(iOS, Android 등)을 선택합니다.
  • Next: Configure Your Platform을 클릭합니다.

첫 번째 OneSignal 앱, 조직 및 채널 설정 예제.

3

플랫폼 자격 증명 구성

플랫폼에 따라 프롬프트를 따릅니다:자격 증명을 입력한 후 Save & Continue를 클릭합니다.
4

대상 SDK 선택

개발 플랫폼(예: iOS, Android, React Native, Unity)과 일치하는 SDK를 선택한 다음 Save & Continue를 클릭합니다.

문서로 이동할 사용 중인 SDK 선택.

5

SDK 설치 및 앱 ID 저장

플랫폼이 구성되면 OneSignal 앱 ID가 표시됩니다. 이 ID를 복사하고 저장하세요. SDK를 설치하고 초기화할 때 필요합니다.다른 사람과 협업하는 경우 Invite 버튼을 사용하여 개발자 또는 팀 구성원을 추가한 다음 Done을 클릭하여 설정을 완료합니다.

앱 ID를 저장하고 추가 팀 구성원을 초대합니다.

완료되면 선택한 플랫폼에 대한 SDK 설치 가이드를 따라 OneSignal 통합을 완료합니다.

Android 설정

1. OneSignal SDK 추가

Android Studio에서 build.gradle.kts (Module: app) 또는 build.gradle (Module: app) 파일을 열고 dependencies에 OneSignal을 추가합니다.
implementation("com.onesignal:OneSignal:[5.1.6, 5.1.99]")

앱의 build.gradle.kts 파일에 OneSignal을 추가하는 예제입니다.

Gradle 동기화

종속성을 추가한 후 프로젝트를 동기화합니다:
  • 배너에서 Sync Now 클릭
  • 또는 파일 > Gradle 파일과 프로젝트 동기화로 이동

2. Application 클래스에서 SDK 초기화

모든 진입점에서 적절한 SDK 설정을 보장하려면 Application 클래스의 onCreate 메서드에서 OneSignal을 초기화하는 것이 모범 사례입니다.
새 클래스(예: ApplicationClass)를 만들고 다음 코드를 추가합니다.
package com.your.package.name // Replace with your package name
import android.app.Application

class ApplicationClass : Application() {
  override fun onCreate() {
    super.onCreate()
    // OneSignal initialization will go here
  }
}

ApplicationClass.kt 파일 예제입니다.

앱의 AndroidManifest.xml을 엽니다<application> 태그에 android:name=".ApplicationClass"를 추가합니다(다른 이름으로 설정한 경우 .ApplicationClass를 실제 클래스 이름으로 바꿉니다).
xml
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools">

     <application
          android:name=".ApplicationClass"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          ...
      </application>

  </manifest>

.ApplicationClass 이름이 있는 AndroidManifest.xml입니다.

ApplicationClass에서 제공된 메서드로 OneSignal을 초기화합니다. OneSignal 대시보드의 **설정 > Keys & IDs**에 있는 OneSignal 앱 ID로 YOUR_APP_ID를 바꿉니다. OneSignal 앱에 액세스할 수 없는 경우 팀 구성원에게 초대를 요청하세요.
package com.your.package.name // Replace with your package name

import android.app.Application
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

import com.onesignal.OneSignal
import com.onesignal.debug.LogLevel

class ApplicationClass : Application() {
   override fun onCreate() {
      super.onCreate()

      // Enable verbose logging for debugging (remove in production)
      OneSignal.Debug.logLevel = LogLevel.VERBOSE
      // Initialize with your OneSignal App ID
      OneSignal.initWithContext(this, "YOUR_APP_ID")
      // Use this method to prompt for push notifications.
      // We recommend removing this method after testing and instead use In-App Messages to prompt for notification permission.
      CoroutineScope(Dispatchers.IO).launch {
         OneSignal.Notifications.requestPermission(true)
      }
   }
}

OneSignal 코드가 추가된 ApplicationClass.kt 파일입니다.

Activity(예: MainActivity)에서 초기화하는 것은 딥 링크 또는 알림에서 앱이 콜드 스타트할 때 호출되지 않을 수 있으므로 권장되지 않습니다. 안정성을 위해 항상 Application 클래스에서 OneSignal을 초기화하세요.

3. 기본 아이콘 사용자 지정

앱의 브랜드에 맞게 알림 아이콘을 구성하는 것이 좋습니다. 그렇지 않으면 OneSignal이 기본 벨 아이콘을 사용합니다.

OneSignal SDK 통합 테스트

이 가이드는 푸시 알림, 구독 등록 및 인앱 메시징을 테스트하여 OneSignal SDK 통합이 올바르게 작동하는지 확인하는 데 도움이 됩니다.
Android 에뮬레이터로 테스트하는 경우 콜드 부팅으로 시작해야 합니다.
  1. Android Studio에서 Device Manager로 이동합니다.
  2. 에뮬레이터 기기를 선택하고 편집을 클릭합니다.
  3. 추가 설정 또는 더 보기로 이동합니다.
  4. 부팅 옵션콜드 부팅으로 설정합니다.
  5. 변경 사항을 저장하고 에뮬레이터를 다시 시작합니다.

모바일 구독 확인

1

테스트 기기에서 앱을 실행합니다.

초기화 중에 requestPermission 메서드를 추가한 경우 네이티브 푸시 권한 프롬프트가 자동으로 표시되어야 합니다.

iOS 및 Android 푸시 권한 프롬프트

2

OneSignal 대시보드 확인

프롬프트를 수락하기 전에 OneSignal 대시보드를 확인합니다:
  • 대상 > 구독으로 이동합니다.
  • “구독 안 함” 상태의 새 항목이 표시되어야 합니다.

'구독 안 함' 상태의 구독을 보여주는 대시보드

3

앱으로 돌아가서 프롬프트에서 허용을 탭합니다.

4

OneSignal 대시보드 구독 페이지를 새로 고칩니다.

구독 상태가 이제 구독됨으로 표시되어야 합니다.

'구독됨' 상태의 구독을 보여주는 대시보드

모바일 구독을 성공적으로 만들었습니다. 모바일 구독은 사용자가 기기에서 처음으로 앱을 열거나 동일한 기기에 앱을 제거하고 다시 설치할 때 생성됩니다.

테스트 구독 설정

테스트 구독은 메시지를 보내기 전에 푸시 알림을 테스트하는 데 유용합니다.
1

테스트 구독에 추가합니다.

대시보드에서 구독 옆에 있는 옵션(점 세 개) 버튼을 클릭하고 테스트 구독에 추가를 선택합니다.

테스트 구독에 기기 추가

2

구독 이름을 지정합니다.

나중에 테스트 구독 탭에서 기기를 쉽게 식별할 수 있도록 구독 이름을 지정합니다.

'구독 이름 지정' 필드를 보여주는 대시보드

3

테스트 사용자 세그먼트를 만듭니다.

대상 > 세그먼트 > 새 세그먼트로 이동합니다.
4

세그먼트 이름을 지정합니다.

세그먼트 이름을 Test Users로 지정합니다(나중에 사용되므로 이름이 중요합니다).
5

테스트 사용자 필터를 추가하고 세그먼트 만들기를 클릭합니다.

테스트 사용자 필터로 'Test Users' 세그먼트 만들기

테스트 사용자 세그먼트를 성공적으로 만들었습니다. 이제 이 개별 기기 및 테스트 사용자 그룹에 메시지를 보내는 것을 테스트할 수 있습니다.

API를 통해 테스트 푸시 보내기

1

앱 API 키 및 앱 ID를 가져옵니다.

OneSignal 대시보드에서 **설정 > Keys & IDs**로 이동합니다.
2

제공된 코드를 업데이트합니다.

아래 코드에서 YOUR_APP_API_KEYYOUR_APP_ID를 실제 키로 바꿉니다. 이 코드는 이전에 만든 Test Users 세그먼트를 사용합니다.
curl -X \
POST --url 'https://api.onesignal.com/notifications' \
 --header 'content-type: application/json; charset=utf-8' \
 --header 'authorization: Key YOUR_APP_API_KEY' \
 --data \
 '{
  "app_id": "YOUR_APP_ID",
  "target_channel": "push",
  "name": "Testing basic setup",
  "headings": {
  	"en": "👋"
  },
  "contents": {
    "en": "Hello world!"
  },
  "included_segments": [
    "Test Users"
  ],
  "ios_attachments": {
    "onesignal_logo": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
  },
  "big_picture": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
}'
3

코드를 실행합니다.

터미널에서 코드를 실행합니다.
4

이미지 및 확인된 전달을 확인합니다.

모든 설정 단계가 성공적으로 완료되면 테스트 구독이 이미지가 포함된 알림을 받아야 합니다:

iOS 및 Android의 이미지가 있는 푸시 알림

이미지는 접힌 알림 보기에서 작게 표시됩니다. 알림을 확장하여 전체 이미지를 확인하세요.
5

확인된 전달을 확인합니다.

대시보드에서 전달 > 전송된 메시지로 이동한 다음 메시지를 클릭하여 통계를 봅니다.확인됨 통계가 표시되어야 하며, 이는 기기가 푸시를 받았음을 의미합니다.

확인된 전달을 보여주는 전달 통계

Professional 플랜 이상인 경우 대상 활동으로 스크롤하여 구독 수준 확인을 확인합니다:

대상 활동의 기기 수준에서 확인된 전달

API를 통해 세그먼트에 알림을 성공적으로 보냈습니다.
  • 확인된 전달이 없나요? 여기에서 문제 해결 가이드를 검토하세요.
  • 문제가 있나요? API 요청과 앱 실행 시작부터 끝까지의 로그를 .txt 파일에 복사하여 붙여넣으세요. 그런 다음 둘 다 support@onesignal.com과 공유하세요.

인앱 메시지 보내기

인앱 메시지를 사용하면 사용자가 앱을 사용하는 동안 사용자와 소통할 수 있습니다.
1

기기에서 앱을 닫거나 백그라운드로 이동합니다.

사용자는 새 세션이 시작되기 전에 인앱 대상 기준을 충족해야 하기 때문입니다. OneSignal에서 새 세션은 사용자가 앱이 백그라운드에 있거나 최소 30초 동안 닫힌 후 앱을 열 때 시작됩니다. 자세한 내용은 인앱 메시지 표시 방법 가이드를 참조하세요.
2

인앱 메시지를 만듭니다.

  • OneSignal 대시보드에서 메시지 > 인앱 > 새 인앱으로 이동합니다.
  • Welcome 메시지를 찾아 선택합니다.
  • 대상을 이전에 사용한 Test Users 세그먼트로 설정합니다.

인앱 메시지로 'Test Users' 세그먼트 타겟팅

3

원하는 경우 메시지 콘텐츠를 사용자 지정합니다.

인앱 Welcome 메시지 사용자 지정 예제

4

트리거를 '앱 열 때'로 설정합니다.

5

빈도를 예약합니다.

**예약 > 이 메시지를 얼마나 자주 표시하시겠습니까?**에서 트리거 조건이 충족될 때마다를 선택합니다.

인앱 메시지 예약 옵션

6

메시지를 라이브로 만듭니다.

메시지 라이브 만들기를 클릭하여 테스트 사용자가 앱을 열 때마다 사용할 수 있도록 합니다.
7

앱을 열고 메시지를 확인합니다.

인앱 메시지가 라이브가 되면 앱을 엽니다. 표시되는 것을 확인해야 합니다:

기기에 표시된 Welcome 인앱 메시지

메시지가 표시되지 않나요?
  • 새 세션 시작
    • 다시 열기 전에 최소 30초 동안 앱을 닫거나 백그라운드로 이동해야 합니다. 이렇게 하면 새 세션이 시작됩니다.
    • 자세한 내용은 인앱 메시지 표시 방법을 참조하세요.
  • 여전히 Test Users 세그먼트에 있나요?
    • 재설치하거나 기기를 전환한 경우 테스트 구독에 기기를 다시 추가하고 Test Users 세그먼트의 일부인지 확인하세요.
  • 문제가 있나요?
    • 위 단계를 재현하는 동안 디버그 로그 가져오기를 따르세요. 이렇게 하면 support@onesignal.com과 공유할 수 있는 추가 로깅이 생성되며 무엇이 진행되고 있는지 조사하는 데 도움이 됩니다.
OneSignal SDK를 성공적으로 설정하고 다음과 같은 중요한 개념을 배웠습니다:이 가이드를 계속하여 앱에서 사용자를 식별하고 추가 기능을 설정하세요.

사용자 식별

이전에는 모바일 구독을 만드는 방법을 시연했습니다. 이제 OneSignal SDK를 사용하여 모든 구독(푸시, 이메일 및 SMS 포함)에서 사용자를 식별하는 것으로 확장하겠습니다. 플랫폼 전체에서 사용자를 통합하고 참여시키는 데 도움이 되는 External ID, 태그, 다중 채널 구독, 개인 정보 보호 및 이벤트 추적을 다룰 것입니다.

External ID 할당

백엔드의 사용자 식별자를 사용하여 기기, 이메일 주소 및 전화번호에서 사용자를 일관되게 식별하려면 External ID를 사용합니다. 이렇게 하면 채널 및 타사 시스템 전체에서 메시징이 통합됩니다(통합에 특히 중요). 앱에서 식별될 때마다 SDK의 login 메서드로 External ID를 설정합니다.
OneSignal은 구독(구독 ID) 및 사용자(OneSignal ID)에 대한 고유한 읽기 전용 ID를 생성합니다.사용자가 다른 기기에 앱을 다운로드하고, 웹사이트를 구독하고, 앱 외부에서 이메일 주소 및 전화번호를 제공하면 새 구독이 생성됩니다.SDK를 통해 External ID를 설정하는 것이 생성 방법에 관계없이 모든 구독에서 사용자를 식별하는 데 적극 권장됩니다.

데이터 태그 추가

태그는 사용자 속성(username, role 또는 기본 설정) 및 이벤트(purchase_date, game_level 또는 사용자 상호 작용)를 저장하는 데 사용할 수 있는 문자열 데이터의 키-값 쌍입니다. 태그는 고급 메시지 개인화세분화를 지원하여 더 고급 사용 사례를 허용합니다. 앱에서 이벤트가 발생할 때 SDK addTagaddTags 메서드로 태그를 설정합니다. 이 예제에서 사용자는 current_level이라는 태그로 식별 가능한 레벨 6에 도달했으며 값은 6으로 설정됩니다.

OneSignal의 "current_level"이라는 태그가 "6"으로 설정된 사용자 프로필

레벨이 5에서 10 사이인 사용자 세그먼트를 만들고 이를 사용하여 타겟팅된 개인화된 메시지를 보낼 수 있습니다:

current_level 값이 4보다 크고 10보다 작은 사용자를 타겟팅하는 세그먼트를 보여주는 세그먼트 편집기


개인화된 메시지로 Level 5-10 세그먼트를 타겟팅하는 푸시 알림을 보여주는 스크린샷


개인화된 콘텐츠가 있는 iOS 및 Android 기기에서 푸시 알림 수신

이메일 및/또는 SMS 구독 추가

이전에 SDK가 푸시 및 인앱 메시지를 보내기 위해 모바일 구독을 만드는 방법을 보았습니다. 해당 구독을 만들어 이메일 및 SMS 채널을 통해 사용자에게 도달할 수도 있습니다. 이메일 주소 및/또는 전화번호가 OneSignal 앱에 이미 있는 경우 SDK는 이를 기존 사용자에 추가하며 중복을 만들지 않습니다. 대시보드의 대상 > 사용자를 통해 또는 View user API로 통합된 사용자를 볼 수 있습니다.

External ID로 통합된 푸시, 이메일 및 SMS 구독이 있는 사용자 프로필

다중 채널 커뮤니케이션 모범 사례
  • 이메일 또는 SMS 구독을 추가하기 전에 명시적 동의를 얻습니다.
  • 각 커뮤니케이션 채널의 이점을 사용자에게 설명합니다.
  • 사용자가 선호하는 채널을 선택할 수 있도록 채널 기본 설정을 제공합니다.

개인 정보 보호 및 사용자 동의

OneSignal이 사용자 데이터를 수집하는 시기를 제어하려면 SDK의 동의 게이팅 메서드를 사용합니다: 자세한 내용은 개인 정보 보호 및 보안 문서를 참조하세요:

푸시 권한 프롬프트

앱을 열 때 즉시 requestPermission()을 호출하는 대신 더 전략적인 접근 방식을 취하세요. 인앱 메시지를 사용하여 권한을 요청하기 전에 푸시 알림의 가치를 설명합니다. 모범 사례 및 구현 세부 정보는 푸시 권한 프롬프트 가이드를 참조하세요.

푸시, 사용자 및 인앱 이벤트 수신

SDK 리스너를 사용하여 사용자 작업 및 상태 변경에 반응합니다. SDK는 연결할 수 있는 여러 이벤트 리스너를 제공합니다. 자세한 내용은 SDK 참조 가이드를 참조하세요.

푸시 알림 이벤트

전체 사용자 지정은 모바일 서비스 확장을 참조하세요.

사용자 상태 변경

인앱 메시지 이벤트

  • addClickListener(): 인앱 클릭 작업을 처리합니다. 딥 링킹 또는 이벤트 추적에 이상적입니다.
  • addLifecycleListener(): 인앱 메시지의 전체 수명 주기(표시됨, 클릭됨, 해제됨 등)를 추적합니다.

고급 설정 및 기능

통합을 향상시킬 더 많은 기능을 탐색하세요:

모바일 SDK 설정 및 참조

모바일 푸시 설정 가이드를 검토하여 모든 주요 기능을 활성화했는지 확인하세요. 사용 가능한 메서드 및 구성 옵션에 대한 전체 세부 정보는 모바일 SDK 참조를 방문하세요.

사용자 지정 알림 레이아웃

Android 12 이상은 사용자 지정 알림에 대한 시스템 템플릿을 적용합니다. 그러나 Android의 표준 알림 스타일을 사용하여 레이아웃을 사용자 지정할 수 있습니다.
Android 12+를 대상으로 하는 앱은 동작 변경으로 인해 완전히 사용자 지정 레이아웃을 사용할 수 없습니다. 사용 가능한 사용자 지정은 Notification.DecoratedCustomViewStyle을 참조하세요.
레이아웃을 사용자 지정하려면:

기본 열기 동작 비활성화

알림을 클릭하면 OneSignal은 앱을 재개하거나 앱이 스와이프된 경우 런처 활동을 엽니다. 알림을 클릭할 때 OneSignal이 런처 활동을 자동으로 여는 것을 방지하려면 AndroidManifest.xml에 다음을 추가하세요:
AndroidManifest.xml
  <application ...>
     <meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />
  </application>
Application 클래스의 onCreate 메서드에서 사용자 지정 알림 열림 리스너를 구현해야 합니다. 이 콜백에서 startActivity를 호출하여 사용자를 의도한 Activity로 이동해야 합니다.

백그라운드 데이터 및 푸시 재정의

오른쪽에서 왼쪽(RTL) 언어 지원

알림 및 UI에서 RTL 언어를 지원하려면 AndroidManifest.xml에 다음을 추가하세요:
AndroidManifest.xml
  <application
    android:supportsRtl="true"
    ...
  </application>
올바른 RTL 동작을 확인하려면 모든 활동 및 보기를 테스트하세요. 자세한 내용은 앱 현지화에 대한 Android 문서를 참조하세요.

도움이 필요하신가요?지원 팀과 채팅하거나 support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:
  • 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
  • OneSignal 앱 ID
  • External ID 또는 Subscription ID(해당하는 경우)
  • OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
  • 관련 로그 또는 오류 메시지
기꺼이 도와드리겠습니다!