배지는 모바일 앱 아이콘에 나타나는 작은 숫자 점입니다. 사용자의 주의를 끌고 참여 행동에 영향을 미칠 수 있습니다. 특히 iOS에서는 배지에 추가 설정이 필요하며 아래에 설명된 대로 유연한 제어를 제공합니다.
Android 웹 푸시 알림의 경우 배지는 앱 아이콘이 아닌 알림에 표시되는 작은 아이콘을 의미하며 사용자 지정할 수 있습니다. 웹 푸시 배지를 참조하세요.
Android 배지
Android 앱 아이콘 배지 동작은 Android 알림 카테고리를 통해 관리할 수 있습니다. 카테고리(채널)가 배지를 표시할지 여부를 제어하고 카테고리별로 배지 동작을 설정할 수 있습니다.
Huawei 배지
Huawei 기기에서 배지는 사용자의 기기 설정에 따라 앱 아이콘에 숫자 또는 점으로 표시될 수 있습니다. 배지는 읽지 않은 메시지나 대기 중인 작업을 나타내어 사용자가 앱을 열도록 유도하는 데 도움이 됩니다. OneSignal을 사용하면 대시보드 또는 API를 통해 Huawei 배지 수를 직접 제어할 수 있습니다.
Huawei 배지 작동 방식
- 배지는 사용자의 기기 수준 배지 표시 설정(기기의 설정 > 알림 > 앱 아이콘 배지에서 제어)에 따라 숫자 수 또는 점으로 앱 아이콘에 표시됩니다. API 호출은 기본 수를 제어하고 기기가 시각적 스타일을 결정합니다.
huawei_badge_class는 모든 배지 작업에 필수입니다. 이는 <package_name>.<ActivityName> 형식(예: com.example.myapp.MainActivity)의 앱 진입 Activity의 정규화된 클래스 이름입니다. 이는 Huawei 시스템에 어떤 앱 아이콘에 배지를 적용할지 알려줍니다.
- 동일한 요청에서
huawei_badge_set_num과 huawei_badge_add_num을 모두 설정하면 huawei_badge_set_num이 우선합니다.
huawei_badge_set_num과 huawei_badge_add_num이 모두 제공되지 않은 경우(huawei_badge_class는 설정된 경우) 배지 수는 기본적으로 1 증가합니다.
huawei_badge_set_num은 0에서 99까지의 값을 허용합니다. 0으로 설정하면 배지가 지워집니다.
huawei_badge_add_num은 1에서 99까지의 값을 허용합니다. 예를 들어 앱이 현재 배지 5를 표시하고 huawei_badge_add_num: 3을 보내면 배지가 8이 됩니다.
배지와 함께 Huawei 푸시 보내기
- 메시지 > 푸시 또는 템플릿으로 이동
- 플랫폼 설정 > Huawei Android로 보내기 > 배지 아래
- 다음 중 하나를 선택:
- 설정 안 함 — 이 알림은 배지에 영향을 미치지 않음
- 설정 — 배지를 특정 숫자(0-99)로 설정
- 증가 — 기존 배지 수 증가(1-99)
Create message API에서 다음 매개변수를 사용합니다:
huawei_badge_class — (문자열, 배지에 필수) 앱의 런처 Activity의 정규화된 클래스 이름(예: "com.example.myapp.MainActivity")
huawei_badge_set_num — (정수, 0-99) 배지 수를 이 정확한 숫자로 설정합니다. 0으로 설정하면 배지가 지워집니다.
huawei_badge_add_num — (정수, 1-99) 기존 배지 수를 이 숫자만큼 증가시킵니다. huawei_badge_set_num과 함께 생략되면 기본적으로 1 증가합니다.
배지를 특정 숫자로 설정:{
"huawei_badge_class": "com.example.myapp.MainActivity",
"huawei_badge_set_num": 5
}
배지를 특정 양만큼 증가:{
"huawei_badge_class": "com.example.myapp.MainActivity",
"huawei_badge_add_num": 1
}
배지 지우기:{
"huawei_badge_class": "com.example.myapp.MainActivity",
"huawei_badge_set_num": 0
}
배지 지우기
Huawei는 사용자가 앱을 열거나 알림을 탭할 때 배지를 자동으로 지우지 않습니다. 배지를 지우려면 두 가지 옵션이 있습니다:
- API 또는 대시보드를 통해:
huawei_badge_set_num을 0으로 설정한 알림을 보냅니다(또는 대시보드에서 설정 > 0 사용). 보이는 알림을 표시하지 않으려면 데이터/백그라운드 알림을 사용할 수 있습니다.
- 클라이언트 측 코드를 통해: 앱은 Huawei 배지 API를 사용하여 로컬에서 배지를 지울 수 있습니다. 이를 위해서는
AndroidManifest.xml에 com.huawei.android.launcher.permission.CHANGE_BADGE 권한이 필요합니다. 구현 세부 정보는 Huawei 배지 개발 가이드를 참조하세요.
huawei_badge_set_num 매개변수에는 EMUI 10.0.0 이상 및 Push SDK 10.1.0 이상이 필요합니다. 이전 기기에서는 huawei_badge_add_num만 지원됩니다.
iOS 배지
iOS에서 배지 수가 올바르게 증가하도록 하려면 다음을 구성해야 합니다:
OneSignalNotificationServiceExtension
- App Groups
전체 지침은 모바일 SDK 설정을 참조하세요.
기본적으로 OneSignal SDK는 다음을 수행합니다:
- 앱이 열릴 때 앱 아이콘 배지를 지웁니다.
- 알림 센터에서 알림을 제거합니다.
알림을 유지하고 배지 로직을 수동으로 관리하려는 경우(예: 자체 카운터를 사용하거나 기기 간에 상태를 동기화) 이 자동 동작을 비활성화할 수 있습니다.
수동 배지 제어를 위한 일반적인 사용 사례
- 앱이 시작되거나 재개될 때 배지 재설정
- 포그라운드에서 알림이 수신될 때 배지 증가
- 메시지를 읽거나 해제할 때 감소
- App Groups 또는 백엔드를 통해 기기 또는 앱 확장 간에 배지 상태 동기화
자동 알림 및 배지 지우기 비활성화
앱의 info.plist에서 키: OneSignal_disable_badge_clearing를 Boolean 타입으로 추가하고 값을 YES로 설정합니다
<key>OneSignal_disable_badge_clearing</key>
<true/>
이렇게 하면 앱이 열릴 때 SDK가 자동으로 알림을 제거하거나 배지를 재설정하는 것을 방지합니다.
iOS 네이티브 배지 관리
OneSignal의 자동 배지 지우기를 비활성화하면 Apple의 네이티브 API를 사용하여 배지 동작을 제어할 수 있습니다.
Apple은 iOS 17에서 UIApplication.shared.applicationIconBadgeNumber를 더 이상 사용하지 않습니다. 이제 UserNotifications 프레임워크의 다음 메서드를 사용해야 합니다:
배지 수 설정
앱 아이콘의 배지를 특정 값으로 설정하려면:
import UserNotifications
import UIKit
if #available(iOS 17.0, *) {
UNUserNotificationCenter.current().setBadgeCount(5) { error in
if let error = error {
print("Failed to set badge count: \(error.localizedDescription)")
} else {
print("Badge count updated successfully.")
}
}
} else {
UIApplication.shared.applicationIconBadgeNumber = 5
}
현재 배지 수 가져오기
iOS는 시스템에서 현재 배지 수를 검색하는 메서드를 제공하지 않습니다. 앱의 상태에서 배지 수를 추적해야 합니다(예: UserDefaults, 앱의 데이터 모델 또는 백엔드와 동기화 사용).
// Example: Store and retrieve badge count using UserDefaults
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// Update badge count as needed
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
배지 증가 또는 감소
페이로드에서 상대적 변경(예: +1 또는 -1)이 지원되지 않으므로 배지 로직을 수동으로 관리해야 합니다. 저장된 배지 수를 업데이트한 다음 설정합니다:
// Example: Increment badge count and update system badge
let currentCount = UserDefaults.standard.integer(forKey: "badgeCount")
let updatedCount = max(0, currentCount + 1)
UserDefaults.standard.set(updatedCount, forKey: "badgeCount")
if #available(iOS 17.0, *) {
UNUserNotificationCenter.current().setBadgeCount(updatedCount)
} else {
UIApplication.shared.applicationIconBadgeNumber = updatedCount
}
배지 지우기
배지를 완전히 제거하려면:
if #available(iOS 17.0, *) {
UNUserNotificationCenter.current().setBadgeCount(0)
} else {
UIApplication.shared.applicationIconBadgeNumber = 0
}
배지와 함께 iOS 푸시 보내기
OneSignal 대시보드 또는 API를 사용하여 배지 수를 설정할 수 있습니다.
- 메시지 > 푸시 또는 템플릿으로 이동
- 플랫폼 설정 > Apple iOS로 보내기 > 배지에서
- 다음 중 하나를 선택:
Create message API에서 다음 매개변수를 사용합니다:
ios_badgeType - SetTo 또는 Increase로 설정
ios_badgeCount - 설정하거나 증가시킬 숫자
{
"ios_badgeType": "Increase",
"ios_badgeCount": 1
}
iOS 푸시 알림을 보낼 때 배지 수는 이러한 옵션에 따라 변경됩니다.
앱이 열려 있는 경우 위의 지침에 따라 자동 배지 지우기를 비활성화하지 않는 한 배지 수가 재설정됩니다.