시작하기
푸시 설정¶
유저는 앱 설치 후 초기 실행 시 약관 동의를 받게 되고 마케팅용 광고 푸시를 받겠다는 동의 절차를 수행하게 됩니다. 하지만 푸시 알림 서비스를 원하지 않는 유저를 위해서 게임 설정 창에서 푸시 알림을 켜고 끌 수 있는 기능을 제공해야 합니다.
푸시 알림 종류¶
푸시 알림에 대한 수신여부를 모든 알림, 게임 알림, 공지 알림, (공지)야간 알림 등으로 구분하여 설정할 수 있어야 합니다.
모든 알림 |
|
---|---|
게임 알림 |
|
공지 알림 |
|
(야간)공지 알림 |
|
푸시 설정 정책¶
1. 여러분의 게임 내에 유저가 푸시 알림을 활성화하거나 비활성화할 수 있는 메뉴를 제공하세요.
- 푸시 설정 메뉴 구성
- 게임 언어가 한국어일 경우 푸시 알림 설정 메뉴의 예시
(Android와 iOS를 포함하는 모든 단말에서 반드시 야간 알림 설정을 노출해야 합니다.) Android 단말에서의 예
iOS 단말에서의 예 - 게임 언어가 한국어가 아닐 경우 푸시 알림 설정 메뉴의 예시
(Android와 iOS를 포함하는 모든 단말에서 반드시 야간 알림 설정을 노출하지 않습니다.) Android 단말에서의 예
푸시 알림 설정 변경 시에는 토스트 팝업을 2초 동안 표시해야 합니다. - 푸시 알림 팝업을 노출하는 경우
- 유저가 접속한 지역이 한국일 경우
- 모든 알림, 공지 알림, 야간 알림 변경 발생 시 (게임 알림의 경우 토스트 팝업을 띄우지 않습니다.)
- 푸시 알림 팝업 문구
- 모든 알림 동의 활성화: [회사명] 2016.05.01 알림 수신에 동의하셨습니다.
- 공지 알림 동의 비활성화: [회사명] 2016.05.01 알림 수신에 거부하셨습니다.
- 야간 알림 동의 활성화: [회사명] 2016.05.01 야간 알림 수신에 동의하셨습니다.
- 토스트 팝업 예시
- 푸시 설정 안내 문구를 제공하세요.
푸시 설정 메뉴에서 수신을 활성화 했음에도 푸시가 수신되지 않으면 단말기 설정 메뉴에서 알림 설정을 확인하려는 안내를 제공해 주세요. 단말기에서 여러분 게임 앱이 발생하는 알림을 차단하면 푸시 알림을 제대로 받을 수 없습니다. - 푸시 안내 문구를 적용한 예시
2. 콘솔을 통해 발송하는 공지의 설정은 Hive API를 적용하세요.
- Hive 콘솔을 통해 발송하는 공지 설정의 종류는 공지 알림과 (공지)야간 알림 2가지가 있습니다.
- 두 알림 옵션은 Hive 서버에 설정된 값을 조회해서 반영해야 합니다.
- 두 알림 옵션에 변경이 발생 시 Hive 서버에 변경 내용을 전달해야 합니다.
- 자세한 내용은 리모트 푸시 전송하기를 참고하세요.
3. 야간 알림 정책을 적용하세요.
야간 알림은 공지 알림에 속한 알림입니다. 야간 알림 설정 메뉴을 구현할 때 다음 정책을 적용하세요.
- 공지 알림을 비활성화하면 야간 알림도 자동으로 비활성화해야 합니다.
- 공지 알림이 비활성화일 때 야간 알림을 활성화할 수 없어야 합니다.
- 공지 알림을 활성화해도 야간 알림을 자동으로 활성화하지 않아야 합니다.
Note
SDK v1.12.0 미만 버전을 사용하는 게임에서 야간 알림을 설정하려면 유저의 접속 지역을 확인할 수 있도록 국가 코드 객체를 활용해야 합니다.
푸시 노출 설정¶
푸시 알림은 기본적으로 앱을 사용하지 않을 때 나타납니다. 그렇지만 Hive SDK v4.9.0을 활용하면 앱이 사용 중일 때도 알림을 노출하도록 설정할 수 있습니다. 단, iOS는 iOS 10 이상 버전에서 지원됩니다.
알림 설정 클래스
앱이 활성화 상태일 때 알림 수신 여부를 표시하는 클래스입니다.
알림 설정 콜백
알림 설정 API를 호출할 때 아래 콜백을 구현하면 요청 결과를 확인할 수 있습니다.
앱 활성화 시 알림 수신 여부 설정
아래 API를 사용하면 앱이 활성화 상태일 때 알림 수신 여부를 설정할 수 있습니다.
API Reference: Push.setForegroundPush
using hive;
// Remote push settings
Boolean useForegroundRemotePush = true;
// Local push settings
Boolean useForegroundLocalPush = false;
PushSetting pushSetting = new PushSetting(useForegroundRemotePush, useForegroundLocalPush);
Push.setForegroundPush (pushSetting, (ResultAPI result, PushSetting setting) => {
if (result.isSuccess()) {
// call successful
// setting: Result of whether to display notifications set via API
}
});
#include "HivePush.h"
// 리모트 푸시 설정
bool bUseForegroundRemotePush = true;
// 로컬 푸시 설정
bool bUseForegroundLocalPush = false;
FHivePushSetting PushSetting(bUseForegroundRemotePush, bUseForegroundLocalPush);
FHivePush::SetForegroundPush(PushSetting, FHivePushOnPushSettingDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHivePushSetting& PushSetting) {
if (Result.IsSuccess()) {
// API 호출 성공
// PushSetting: API를 통해 설정된 알림 표시 여부 결과
}
}));
API Reference: Push ::setForegroundPush
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Remote push settings
bool useForegroundRemotePush = true;
// Local push settings
bool useForegroundLocalPush = false;
PushSetting pushSetting(useRemote, useLocal);
Push::setForegroundPush(pushSetting, [=](ResultAPI const & result, PushSetting setting) {
if (result.isSuccess()) {
// call successful
// setting: Result of whether to display notifications set via API
}
});
API Reference: Push.setForegroundPush
import com.hive.Push
import com.hive.ResultAPI
// Remote push settings
val useForegroundRemotePush = true
// Local push settings
val useForegroundLocalPush = false
val pushSetting = Push.PushSetting(useForegroundRemotePush, useForegroundLocalPush)
Push.setForegroundPush(pushSetting, object: Push.PushSettingListener{
override fun onPushSetting(result: ResultAPI, pushSetting: Push.PushSetting?) {
if (result.isSuccess) {
// call successful
// pushSetting: Result of notification visibility set via API
}
}
})
API Reference: Push.INSTANCE .setForegroundPush
import com.hive.Push;
import com.hive.ResultAPI;
// Remote push settings
boolean useForegroundRemotePush = true;
// Local push settings
boolean useForegroundLocalPush = false;
Push.PushSetting setting = new Push.PushSetting(useForegroundRemotePush, useForegroundLocalPush);
Push.INSTANCE.setForegroundPush(setting, (result, pushSetting) -> {
if (result.isSuccess()) {
// call successful
// pushSetting: Result of notification visibility set via API
}
});
API Reference: Swift
import HIVEService
let pushSetting = PushSetting()
// Remote push settings
pushSetting.useForegroundRemotePush = true
// Local push settings
pushSetting.useForegroundLocalPush = false
PushInterface.setForegroundPush(pushSetting) { result, setting in
if result.isSuccess() {
// call successful
// setting: Result of whether to display notifications set via API
}
}
API Reference: Objective -C
#import <HIVEService/HIVEService-Swift.h>
HIVEPushSetting *pushSetting = [[HIVEPushSetting alloc] init];
// Remote push settings
pushSetting.useForegroundRemotePush = YES;
// Local push settings
pushSetting.useForegroundLocalPush = NO;
[HIVEPush setForegroundPush: pushSetting handler: ^(HIVEResultAPI *result, HIVEPushSetting *setting) {
if ([result isSuccess]) {
// call successful
// setting: Result of whether to display notifications set via API
}
}];
앱 활성화 시 알림 수신 여부 조회
아래 API를 사용하면 앱이 활성화 상태일 때 알림 수신 여부를 조회할 수 있습니다.
API Reference: Push .getForegroundPush
API Reference: Push ::getForegroundPush
API Reference: Kotlin
API Reference: Push.INSTANCE .getForegroundPush
API Reference: PushInterface .getForegroundPush
API Reference: HIVEPush getForegroundPush
Provisional Authorization¶
Hive SDK v4.11.4부터 iOS 12에 추가된 Provisional Authorization 기능을 지원합니다.
Hive SDK 약관 동의 이후 노출되던 기존의 푸시 전송 동의 팝업이 더 이상 노출되지 않기 때문에 앱을 실행한 유저들은 모든 푸시 메시지를 기본으로 수신합니다. 이때 푸시 수신 여부는 유저가 받은 푸시 메시지나 앱 설정에서 선택할 수 있습니다. 유저가 수동으로 푸시 전송에 동의하기 전까지는 푸시를 수신해도 알림음이 울리지 않으며, 팝업 또한 노출되지 않습니다. iOS 12 미만 버전을 사용하는 기기에서는 기존과 동일하게 초기화 이후 푸시 전송 동의 팝업이 노출됩니다.
명시적 푸시 권한 요청¶
v4.16.2 (Android) 부터 게임에서 필요한 경우 유저에게 명시적으로 푸시 전송 동의 팝업을 노출할 수 있는 API가 적용됩니다. 유저가 푸시 전송 동의 여부를 설정하지 않은 상태라면 Push 클래스의 requestPushPermission()
메서드를 호출하여 유저에게 푸시 전송 동의 팝업을 노출할 수 있습니다.
iOS의 경우 Provisional Authorization을 활용하여 Hive SDK 약관 동의에 대한 묵시적 권한 동의를 받은 경우라도 푸시 전송 동의 팝업이 노출되며, 푸시 전송에 동의한 유저에게는 명시적으로 푸시 메시지가 노출됩니다.
Android의 경우 Android 13 이상 기기에서 target SDK 33 이상일 때 팝업이 노출되며, target SDK 33 미만일 경우에는 AuthV4.setup() 시 노출됩니다.
다음은 iOS 푸시 전송 동의 팝업을 노출하는 예제 코드입니다.
API Reference: hive.Push.requestPushPermission
API Reference: Push::requestPushPermission
API Reference: Push.requestPushPermission
API Reference: Push.INSTANCE.requestPushPermission
API Reference: PushInterface.requestPushPermission
API Reference: HIVEPush:: requestPushPermission
푸시 설정 다국어 표기법¶
언어 | 모든 알림 | 게임 알림 | 공지 알림 |
---|---|---|---|
영어 | All notifications | Game notification | Announcement notification |
일본어 | 全ての通知 | ゲーム通知 | お知らせ通知 |
중국어 간체 | 所有通知 | 游戏通知 | 公告通知 |
중국어 번체 | 所有通知 | 遊戲通知 | 公告通知 |
독일어 | Alle Benachrichtigungen | Spiel-Benachrichtigung | Ankündigungen |
러시아어 | Все уведомления | Уведомления игры | Объявления |
말레이시아어 | Semua notifikasi | Notifikasi permainan | Notifikasi pengumuman |
베트남어 | Tất cả thông báo | Thông báo game | Thông báo tin tức |
스페인어 | Todas las notificaciones | Notificación del Juego | Notificación de Anuncio |
이탈리아어 | Tutte le notifiche | Notifiche di gioco | Notifiche degli avvisi |
인도네시아어 | Semua Notifikasi | Notifikasi Game | Notifikasi Pengumuman |
태국어 | การแจ้งเตือนทั้งหมด | การแจ้งเตือนเกม | การแจ้งเตือนประกาศ |
터키어 | Tüm Bildirimler | Oyun Bildirimi | Duyuru Bildirimi |
포르투갈어 | Todas as notificações | Notificação de Jogo | Notificação de Anúncios |
프랑스어 | Toutes les notifications | Notification de jeu | Notification d'annonce |
아랍어 | كل الإشعارات | إشعارات اللعبة | إشعارات الإخطار |
푸시 알림과 앱 아이콘 뱃지¶
기기에서 알림을 수신하면 앱 아이콘 뱃지가 자동으로 표시됩니다. 뱃지란 앱 아이콘 오른쪽 상단 모서리에 표시되는 숫자로, 이 앱으로 온 알림 개수입니다. 뱃지 기능은 앱 설정 또는 기기 설정에서 끄거나 켤 수 있습니다. 기본적으로 뱃지 표시는 OS별로 아래 정책을 따릅니다.
- iOS
- 새로 수신한 알림 개수와 상관 없이 앱 아이콘 뱃지는 1로 표시합니다.
- 앱 아이콘 뱃지가 0이 되는 순간, 알림 센터에 쌓인 모든 알림이 제거됩니다.
- Hive SDK에서 앱 아이콘 뱃지가 0이 되는 시점은 다음과 같습니다.
- 앱을 최초로 실행할 때
- 알림을 클릭하여 앱을 다시 포그라운드 상태로 불러왔을 때
- Android
- 알림을 수신하면 뱃지가 1개씩 증가합니다.
- 알림을 클릭하여 앱을 실행하는 등, 앱이 포그라운드 상태가 되면 뱃지가 0으로 초기화됩니다.
- 알림 센터의 목록은 클릭한 알림만 삭제됩니다.