서버 점검
앱을 서비스하다 보면 정기 또는 긴급 서버 점검으로 인해 서버 점검 팝업을 노출하고 앱을 종료시키거나 사용자들을 다른 사이트로 이동시켜야 하는 상황이 있습니다. 이와 같이, Hive SDK는 서버 점검 상황에 대응할 수 있는 공지 팝업을 제공합니다.
팝업 | 설명 |
---|---|
서버 점검 | 게임 서버별로 점검 여부를 설정할 수 있으며, 점검 시간 동안 게임 관련 링크 제공을 권장함 |
노출 방법¶
- Hive 콘솔에 원하는 서버 점검 공지 팝업을 등록합니다.
- Hive 콘솔 앱 센터에서 점검할 서버 ID를 등록합니다.
- Configuration.setServerId를 호출해 점검할 서버 정보를 입력합니다.
- 서버 점검 시점에
AuthV4.checkMaintenance
를 호출하면, 해당 서버에 접속 시 등록한 팝업이 노출됩니다.
여기서 서버 점검을 하는 시점이란, 서버 점검을 위해 사용자 앱 서버 접속을 차단하고 이미 서버에 접속했던 사용자들을 로그아웃시킨 후를 의미합니다. Hive 콘솔에 팝업을 등록할 때 원하는 서버 점검 시간대를 설정할 수 있습니다.
Note
Hive SDK 초기화에 성공한 후에 AuthV4.checkMaintenance
를 호출해야 합니다.
Info
앱에서 AuthV4.checkMaintenance
를 항상 실행하는 흐름을 권장합니다. 정기 서버 점검 등 주기적인 서버 점검 팝업을 편하게 노출할 수 있습니다.
AuthV4.checkMaintenance
호출 예시는 아래와 같습니다.
API Reference: Unity®
using hive;
// Whether to use Hive SDK UI
Boolean isShow = true;
AuthV4.checkMaintenance(isShow, (ResultAPI result, List maintenanceInfoList) => {
if (isShow) {
if (result.isSuccess()) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) Application.Quit();
} else {
// Network error or other. try again.
}
} else { // isShow false
if (result.isSuccess()) {
if (maintenanceInfoList.Any()) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
});
API Reference: C++
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Whether to use Hive SDK UI
bool isShow = true;
AuthV4::checkMaintenance(isShow, [=](ResultAPI const & result, vector const & maintenanceInfolist){
if (isShow) {
if (result.isSuccess()) {
// There's nothing to check
} else if (reuslt.needExit()) {
// TODO: Implement app termination functionality
// Cocos2d-x engine user
// Example) exit(0);
// Unreal Engine User
// Example) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
} else {
// Network error or other. try again.
}
} else { // isShow false
if (result.isSuccess()) {
if (maintenanceInfolist.size() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
});
API Reference: Kotlin
import com.hive.AuthV4;
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
val isShow = true
AuthV4.checkMaintenance(isShow, object : AuthV4.AuthV4MaintenanceListener {
override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {
if (isShow) {
if (result.isSuccess) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) exitProcess(0)
} else {
// Network error or other. try again.
}
} else { // isShow false
if (result.isSuccess) {
if (maintenanceInfo != null && maintenanceInfo.size > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
}
})
API Reference: Java
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
boolean isShow = true;
AuthV4.checkMaintenance(isShow, (result, maintenanceInfo) -> {
if (isShow) {
if (result.isSuccess()) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) System.exit(0);
} else {
// Network error or other. try again.
}
} else { // isShow false
if (result.isSuccess()) {
if (maintenanceInfo != null && maintenanceInfo.size() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
});
API Reference: Swift
import HIVEService
// Whether to use Hive SDK UI
let isShow = true
AuthV4Interface.checkMaintenance(isShow) { result, maintenances in
if isShow {
if result.isSuccess() {
// There's nothing to check
} else if result.needExit() {
// TODO: Implement app termination functionality
// Example) exit(0)
} else {
// Network error or other. try again.
}
} else { // isShow false
if result.isSuccess() {
if (maintenances.count > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
}
API Reference: Objective-C
#import <HIVEService/HIVEService-Swift.h>
// Whether to use Hive SDK UI
BOOL isShow = YES;
[HIVEAuthV4 checkMaintenance:isShow handler: ^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {
if (isShow) {
if (result.isSuccess) {
// There's nothing to check
} else if (result.needExit) {
// TODO: Implement app termination functionality
// Example) exit(0);
} else {
// Network error or other. try again.
}
} else { // isShow false
if (result.isSuccess) {
if (maintenanceInfolist.count > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
}];
#include "HiveAuthV4.h"
// Hive SDK UI 사용여부
bool bIsShow = true;
FHiveAuthV4::CheckMaintenance(bIsShow, FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
if (bIsShow) {
if (Result.IsSuccess()) {
// There's nothing to check
} else if (Result.NeedExit()) {
// TODO: Implement app termination functionality
// Example) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
} else {
// Network error or other. try again.
}
} else { // isShow false
if (Result.IsSuccess()) {
if (AuthV4MaintenanceInfoArray.Num() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
}));
서버 점검 팝업 UI는 Hive SDK 기본 UI 또는 커스터마이징한 UI를 사용할 수 있는데, 만약 isShow
가 true
이면 기본 UI를 사용합니다. 커스터마이징한 UI를 사용한다면 isShow
가 false
이어야 합니다.
Configuration.setServerId¶
서버 점검 팝업을 노출하기 전에, 개발사는 어떤 서버를 점검할 것인지 선택해야 합니다. Hive 콘솔에서 서버 점검 팝업을 앱 서버별로 다르게 등록할 수 있으며 서버마다 서로 다른 서버 점검 팝업을 노출할 수 있습니다. 콘솔에서 서버마다 다른 점검 팝업을 등록했다면, SDK에서는 점검할 서버 ID값을 가지고 Configuration.setServerId
를 호출해 점검할 서버를 선택합니다. AuthV4.checkMaintenance
를 호출하기 이전에만 이 메서드를 호출하면 됩니다. 만약 앱 사용자가 앱 접속 후 서버를 선택한다면, 사용자가 선택한 서버 ID값을 가지고 Configuration.setServerId
를 호출하세요.
팝업 버튼 설정에 따른 동작 구현¶
Hive 콘솔에서는 팝업 닫기, 게임 종료, URL로 이동 등 서버 점검 팝업에 노출할 버튼을 선택할 수 있습니다. Hive SDK에서는 사용자가 버튼을 눌렀을 때 구현해야 하는 작업이 Hive SDK 기본 UI를 사용하는지 커스텀 UI를 사용하는지에 따라 다릅니다. 자세한 내용은 서버 점검 팝업 UI를 확인하세요.
팝업 UI: 기본 UI¶
서버 점검 팝업은 Hive SDK에서 제공하는 기본 UI 또는 커스터마이징한 UI를 사용할 수 있습니다. 만약 커스터마이징한 UI를 사용하는 경우, Hive SDK에서 커스텀 UI 생성에 필요한 정보를 앱 클라이언트에 전달해주며, 앱 클라이언트는 이 정보를 받아 UI를 그리고 노출하는 코드를 직접 구현해야 합니다.
기본 UI는 Hive SDK에서 기본으로 제공하는 서버 점검 팝업 UI입니다. 기본 UI를 노출하려면 AuthV4.checkMaintenance
를 호출할 때 아래와 같이 isShow
를 true
로 하여 호출합니다.
Info
정기 서버 점검 팝업 또는 긴급 서버 점검 팝업용 팝업을 따로 Hive 콘솔에 등록해놓고 사용하는 것을 권장합니다.
정기 점검인 경우, Hive 콘솔에서 정기 점검 시간대를 설정 후 앱 클라이언트에서 AuthV4.checkMaintenance
를 호출하면 해당 시간대에만 팝업을 노출합니다.
긴급 점검인 경우, Hive 콘솔에서 시간을 "현재 시간"으로 설정하고 앱 서버에서 사용자들을 모두 접속 차단시킨 후, 앱 클라이언트에서 AuthV4.checkMaintenance
를 호출하면 사용자들이 앱에 재접속했을 때 현재 시간에 맞추어 팝업을 노출됩니다.
API Reference: Unity®
using hive;
// Whether to use Hive SDK UI
Boolean isShow = true;
AuthV4.checkMaintenance(isShow, (ResultAPI result, List maintenanceInfoList) => {
if (result.isSuccess()) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) Application.Quit();
} else {
// Network error or other. try again.
}
});
API Reference: C++
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Whether to use Hive SDK UI
bool isShow = true;
AuthV4::checkMaintenance(isShow, [=](ResultAPI const & result, vector const & maintenanceInfolist){
if (result.isSuccess()) {
// There's nothing to check
} else if (reuslt.needExit()) {
// TODO: Implement app termination functionality
// Cocos2d-x engine user
// Example) exit(0);
// Unreal Engine User
// Example) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
} else {
// Network error or other. try again.
}
});
API Reference: Kotlin
import com.hive.AuthV4;
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
val isShow = true
AuthV4.checkMaintenance(isShow, object : AuthV4.AuthV4MaintenanceListener {
override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {
if (result.isSuccess) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) exitProcess(0)
} else {
// Network error or other. try again.
}
}
})
API Reference: Java
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
boolean isShow = true;
AuthV4.checkMaintenance(isShow, (result, maintenanceInfo) -> {
if (result.isSuccess()) {
// There's nothing to check
} else if (result.needExit()) {
// TODO: Implement app termination functionality
// Example) System.exit(0);
} else {
// Network error or other. try again.
}
});
API Reference: Swift
import HIVEService
// Whether to use Hive SDK UI
let isShow = true
AuthV4Interface.checkMaintenance(isShow) { result, maintenances in
if result.isSuccess() {
// There's nothing to check
} else if result.needExit() {
// TODO: Implement app termination functionality
// Example) exit(0)
} else {
// Network error or other. try again.
}
}
API Reference: Objective-C
#import <HIVEService/HIVEService-Swift.h>
// Whether to use Hive SDK UI
BOOL isShow = YES;
[HIVEAuthV4 checkMaintenance:isShow handler: ^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {
if (result.isSuccess) {
// There's nothing to check
} else if (result.needExit) {
// TODO: Implement app termination functionality
// Example) exit(0);
} else {
// Network error or other. try again.
}
}];
#include "HiveAuthV4.h"
// Hive SDK UI 사용여부
bool bIsShow = true;
FHiveAuthV4::CheckMaintenance(bIsShow, FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
if (Result.IsSuccess()) {
// There's nothing to check
} else if (Result.NeedExit()) {
// TODO: Implement app termination functionality
// Example) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
} else {
// Network error or other. try again.
}
}));
게임 종료 버튼 사용 시 앱 종료 구현¶
Hive 콘솔에서 게임 종료 버튼을 사용한다면, Hive SDK는 앱을 종료해야 함을 알려주는 이벤트(NeedExit
)를 ResultAPI result
로 전달합니다. 앱 클라이언트는 이 이벤트를 수신 후 앱을 종료하는 코드를 자체적으로 구현, 실행해야 하며, 이 부분은 Hive SDK 기본 UI와 커스텀 UI 모두 동일합니다.
상세 보기(URL로 이동) 버튼 사용 시 URL 이동 구현¶
Hive 콘솔에서 기본 URL**을 설정하고 **URL로 이동**을 활성화한 경우, **상세 보기 버튼을 누르면 Hive SDK가 자동으로 외부 브러우저를 열어 기본 URL에 설정한 주소로 앱 사용자를 이동시킵니다.
팝업 닫기 버튼 사용 시 팝업 종료 구현¶
Hive 콘솔에서 **팝업 닫기 버튼**을 사용하는 경우, 닫기 버튼을 누르면 Hive SDK는 팝업창을 자동으로 닫습니다.
사용자 행동 반환¶
기본 UI에서도 ResultAPI
객체를 통해 사용자가 팝업창에서 어떤 버튼을 눌렀는지 알 수 있습니다. 사용자가 버튼을 누르면 AuthV4.checkMaintenance
콜백 결과인 ResultAPI
객체를 얻으며, 이 객체에서 사용자가 취한 행동을 알 수 있습니다.
팝업 UI: 커스텀 UI¶
커스텀 UI는 앱 개발사에서 직접 구현하는 서버 점검 팝업 UI입니다. AuthV4.checkMaintenance
를 호출할 때 아래와 같이 isShow
를 false
로 하여 호출하면, 앱 클라이언트에서 팝업 UI 구현할 수 있도록 필요한 정보를 AuthV4MaintenanceInfo
객체에 담아 반환합니다. 개발사는 이 객체에 있는 값들을 사용해 커스텀 UI를 직접 구현, 노출해야 합니다. 만약, 이 값이 null
로 반환되면 팝업을 띄울 내용이 없음을 의미합니다.
아래는 isShow
가 false
일 때 호출 예시입니다.
API Reference: Unity®
using hive;
// Whether to use Hive SDK UI
Boolean isShow = false;
AuthV4.checkMaintenance(isShow, (ResultAPI result, List maintenanceInfoList) => {
if (result.isSuccess()) {
if (maintenanceInfoList.Any()) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
});
API Reference: C++
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Whether to use Hive SDK UI
bool isShow = flase;
AuthV4::checkMaintenance(isShow, [=](ResultAPI const & result, vector const & maintenanceInfolist){
if (result.isSuccess()) {
if (maintenanceInfolist.size() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
});
API Reference: Kotlin
import com.hive.AuthV4;
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
val isShow = false
AuthV4.checkMaintenance(isShow, object : AuthV4.AuthV4MaintenanceListener {
override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {
if (result.isSuccess) {
if (maintenanceInfo != null && maintenanceInfo.size > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
})
API Reference: Java
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Whether to use Hive SDK UI
boolean isShow = false;
AuthV4.checkMaintenance(isShow, (result, maintenanceInfo) -> {
if (result.isSuccess()) {
if (maintenanceInfo != null && maintenanceInfo.size() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
});
API Reference: Swift
import HIVEService
// Whether to use Hive SDK UI
let isShow = false
AuthV4Interface.checkMaintenance(isShow) { result, maintenances in
if result.isSuccess() {
if (maintenances.count > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}
API Reference: Objective-C
#import <HIVEService/HIVEService-Swift.h>
// Whether to use Hive SDK UI
BOOL isShow = YES;
[HIVEAuthV4 checkMaintenance:isShow handler: ^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {
if (result.isSuccess) {
if (maintenanceInfolist.count > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}];
#include "HiveAuthV4.h"
// Hive SDK UI 사용여부
bool bIsShow = true;
FHiveAuthV4::CheckMaintenance(bIsShow, FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
if (Result.IsSuccess()) {
if (AuthV4MaintenanceInfoArray.Num() > 0) {
// TODO: Show custom maintenance dialog.
} else {
// There's nothing to check
}
} else {
// Network error or other. try again.
}
}));
AuthV4MaintenanceInfo 객체¶
필드명 | 설명 | 타입 |
---|---|---|
title | 팝업 제목 | String |
message | 팝업 내용 | String |
button | 팝업 버튼의 라벨 문구 | String |
action | 팝업 버튼을 눌렀을 때 어떤 동작을 할 것인지 의미 OPEN_URL: 외부 브라우저로 전달된 URL을 실행 EXIT: 앱 종료 DONE: 아무 처리 하지 않고 점검 팝업 종료 | AuthV4MaintenanceActionType 열거형 |
url | 외부 브라우저로 띄울 URL. action 필드 값이 OPEN_URL일 때 유효함 | String |
remainingTime | 점검 완료까지 남은 초단위 시간. 시간은 실시간 갱신되며 0초가 되면 앱이 종료됨 | Integer |
startDate | 점검 시작일 | String |
endDate | 점검 종료일 | String |
customerButton | 고객센터 버튼 텍스트(점검 팝업에서는 "" 전달됨) | String |
customerLink | 고객센터 버튼 링크(점검 팝업에서는 "" 전달됨) | String |
exButtons | 팝업 버튼 정보(최대 3개까지 전달됨) | JSONArray |
exButtons.action | 팝업 버튼을 눌렀을 때 어떤 동작을 할 것인지 의미 OPEN_URL: 외부 브라우저로 전달된 URL을 실행 EXIT: 앱 종료 DONE: 아무 처리 하지 않고 점검 팝업 종료 | AuthV4MaintenanceActionType 열거형 |
exButtons.button | 팝업 버튼의 라벨 문구 | String |
exButtons.url | 외부 브라우저로 띄울 URL. action 필드 값이 OPEN_URL일 때 유효함 | String |
개발사는 이 객체를 사용해 커스텀 서버 점검 팝업을 생성, 노출하는 코드를 앱 클라이언트에 구현합니다. 이 객체를 사용하면 서버를 점검할 때마다 자동으로 커스텀 서버 점검 팝업을 노출할 수 있습니다.
Note
Hive 콘솔에서 설정한 서버 점검 시간대가 아니라면 AuthV4MaintenanceInfo
객체로 null
을 반환합니다.
Info
정기 서버 점검 팝업 또는 긴급 서버 점검 팝업용 팝업을 따로 Hive 콘솔에 등록해놓고 사용하는 것을 권장합니다.
정기 점검인 경우, Hive 콘솔에서 정기 점검 시간대를 설정 후 앱 클라이언트에서 AuthV4.checkMaintenance
를 호출하면 해당 시간대에만 팝업을 노출합니다.
긴급 점검인 경우, Hive 콘솔에서 시간을 "현재 시간"으로 설정하고 앱 서버에서 사용자들을 모두 접속 차단시킨 후, 앱 클라이언트에서 AuthV4.checkMaintenance
를 호출하면 사용자들이 앱에 재접속했을 때 현재 시간에 맞추어 팝업을 노출됩니다.
게임 종료 버튼 사용 시 앱 종료 구현¶
Hive 콘솔에서 게임 종료 버튼을 사용한다면, Hive SDK는 앱을 종료해야 함을 알려주는 이벤트(Exit
)를 ResultAPI result
로 전달합니다. 앱 클라이언트는 이 이벤트를 수신 후 앱을 종료하는 코드를 자체적으로 구현, 실행해야 하며, 이 부분은 Hive SDK 기본 UI와 커스텀 UI 모두 동일합니다.
상세 보기(URL로 이동) 버튼 사용 시 URL 이동 구현¶
Hive 콘솔에서 기본 URL**을 설정하고 **URL로 이동**을 활성화한 경우, **상세 보기 버튼을 누를 때 개발사는 사용자를 기본 URL에 설정한 주소로 이동시키는 동작을 직접 구현해야 합니다. 이를 구현하기 위해 필요한 정보는 AuthV4MaintenanceInfo
객체에 있습니다.
예를 들어 기본 URL을 설정했다면, AuthV4MaintenanceInfo
객체 action
필드에 특정 URL로 이동해야 함을 알려주는 값(OPEN_URL
)을 받습니다. 앱 클라이언트가 이 값을 수신했다면, url
에 있는 URL로 앱 사용자를 이동시키는 코드를 구현해야 합니다.
팝업 닫기 버튼 사용 시 팝업 종료 구현¶
Hive 콘솔에서 **팝업 닫기 버튼**을 사용하는 경우, 닫기 버튼을 누르면 개발사는 AuthV4MaintenanceInfo
객체에 있는 정보를 토대로 팝업창을 자동으로 종료하는 코드를 구현해야 합니다.
노출 순서¶
공지 팝업들은 동시에 노출되지 않습니다. 만약 모든 공지 팝업(국가 제한, 업데이트, 일반 공지, 서버 점검)을 콘솔에 등록했다면, 공지 팝업을 노출하는 순서는 아래와 같습니다.
- 국가 제한 팝업
- 역할: 특정 국가에서 접속한 경우 접속을 차단 안내
- 다음 단계: 앱을 종료하도록 유도
- 업데이트 팝업
- 역할: (국가 제한에 걸리지 않는다면) 사용자가 구버전 앱 사용 안내
- 다음 단계: 앱을 종료하고 사용자를 앱 마켓으로 이동시켜 앱을 최신 버전으로 업데이트하도록 유도
- 일반 공지 팝업
- 역할: (국가 제한에 걸리지 않고, 앱이 최신 버전이라면) 앱 업데이트에 대한 안내와 고지할 공지사항 노출
- 서버 점검 팝업
- 역할: (국가 제한에 걸리지 않고, 앱이 최신 버전이며, 일반 공지를 안내한 후) 서버 점검을 안내
- 다음 단계: 앱을 종료하도록 유도
예시 1: 사용자가 접속 제한 국가에서 접속 시¶
접속이 제한된 국가에서 사용자가 접속했다면, 국가 제한 팝업만을 노출하고 게임을 종료합니다. 국가 제한 팝업을 콘솔에 등록하지 않았다면, 국가 제한 팝업은 노출하지 않고 아래 예시 2와 같이 업데이트 팝업 노출 단계로 넘어갑니다.
예시 2: 사용자가 접속 허용 국가에서 접속 시¶
접속을 허용한 국가에서 사용자가 접속했다면, 국가 제한 팝업은 노출하지 않습니다. 이후 앱이 최신 버전인지 아닌지 여부에 따라 노출하는 팝업이 아래와 같이 달라집니다.
앱이 구 버전인 경우 (앱을 업데이트하지 않은 경우)¶
업데이트 팝업을 노출합니다. 업데이트 팝업은 게임을 종료 후 마켓에서 게임을 최신 버전으로 업데이트하도록 유도합니다.
앱이 최신 버전인 경우 (앱을 업데이트한 경우)¶
업데이트 팝업을 노출하지 않고 일반 공지 팝업을 노출합니다. 만약 서버 점검중인 경우 서버 점검 팝업을 노출합니다.