원격 서비스
Hive SDK는 본래 앱 서버에서 해야할 작업을 Hive 콘솔을 통해 원격으로 할 수 있도록 하는 서비스들인 원격 서비스들을 제공합니다. 프로비저닝에서 제공하는 원격 서비스들은 아래와 같습니다.
- 리모트 컨피그레이션
- 리모트 로깅
리모트 컨피그레이션¶
리모트 컨피그레이션은 원래 앱 서버에서 수정해야 하는 서버 설정을 Hive 콘솔에서 원격으로 수정할 수 있는 기능입니다. 현재는 앱 서버 URL만 원격으로 수정하는 기능만을 지원합니다. 앱 서버 URL은 AppID, 앱 버전, 서버별로 다르게 수정할 수 있습니다. 리모트 컨피그레이션을 사용하려면 먼저 Hive 콘솔에서 서버 URL을 등록해야 합니다.
앱 클라이언트에서 Configuration.getMetaData
를 호출하면 Hive 콘솔에 등록 또는 콘솔에서 수정한 서버 URL을 String값으로 받을 수 있습니다. 다음은 서버 URL을 호출하는 예제 코드입니다.
API Reference: HiveConfiguration getMetaData
API Reference: Configuration:: getMetaData
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// data key
string key = "game_server_url";
// Whether data is updated
bool forceReload = false;
// metadata call
Configuration::getMetaData(key, forceReload, [=](ResultAPI const & result, string value) {
if (result.isSuccess()) {
// call successful
}
});
API Reference: Configuration.getMetaData
import com.hive.Configuration;
import com.hive.ResultAPI;
// data key
val key = "game_server_url"
// Whether data is updated
val forceReload = false
// metadata call
Configuration.getMetaData(key, forceReload, object : Configuration.GetMetaDataListener {
override fun onGetMetaData(result: ResultAPI, data: String) {
if (result.isSuccess) {
// call successful
}
}
})
API Reference: Configuration.INSTANCE .getMetaData
API Reference: ConfigurationInterface.getMetaData
API Reference: HIVEConfiguration getMegaData
#import <HIVEService/HIVEService-Swift.h>
// data key
NSString *key = @"game_server_url";
// Whether data is updated
BOOL forceload = NO;
// metadata call
[HIVEConfiguration getMegaData: key forceReload: forceReload handler: ^(HIVEResultAPI *result, NSString *value) {
if ([result isSuccess]) {
// call successful
}
}];
#include "HiveConfiguration.h"
// 데이터 키
FString Key = TEXT("game_server_url");
// 데이터 갱신 여부
bool bForceReload = false;
// 메타 데이터 호출
FHiveConfiguration::GetMetaData(Key, bForceReload, FHiveConfigurationOnMetaDataDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FString& Value) {
if (Result.IsSuccess()) {
// 호출 성공
}
}));
캐싱값 사용¶
Hive SDK는 초기화 과정에서 Hive 콘솔에 미리 입력한 서버 URL을 읽어와 앱 클라이언트에 캐싱합니다. 따라서, Hive 콘솔에서 서버 URL을 변경하지 않고 기존에 입력했던 값을 읽어오기만 하려면, 이 캐싱값을 사용해 네트워크 비용을 절감할 수 있습니다. 서버 URL을 읽어올 때 캐싱값을 사용하려면 Configuration.getMetaData
호출 시 forceReload
를 false
로 합니다.
만약 Hive 콘솔에서 서버 URL을 수정했고 이 수정한 URL을 앱에 반영해야 한다면, Configuration.getMetaData
호출 시 forceReload
를 true
로 합니다. 이렇게 호출하면, 앱 클라이언트에 캐싱된 기존 서버 URL을 삭제하고 Hive 서버에서 최신 서버 URL을 가져옵니다. 이러한 호출 패턴은 일반적으로 앱 재실행 시 사용합니다.
리모트 로깅¶
리모트 로깅은 원래 앱 서버에서 수집해야 하는 로그를 Hive SDK에서 원격으로 수집할 수 있는 기능입니다. 로그를 수집할 특정 사용자를 정하면, 이 사용자가 앱을 사용할 때 쌓이는 앱 로그와 Hive 로그를 수집해 구글 클라우드에 적재합니다. 개발사는 이렇게 원격으로 수집한 로그를 받아서 모니터링하고 디버깅에 사용할 수 있습니다. 리모트 로깅을 사용하려면 먼저 Hive 콘솔에서 로그를 수집한 사용자를 설정해야 합니다.
동작 방식¶
리모트 로깅 동작 방식은 다음과 같습니다.
타겟 사용자 설정¶
로그를 수집할 수 있는 사용자는, 앱을 최소 한 번 이상 실행한(=Hive SDK 초기화가 최소 한 번 이상 실행된) 상태에서 **DID**를 발급한 사용자입니다. 다만 앱을 실행하는 과정에서 Hive SDK를 초기화 전에 크래시나 오류가 발생했다면 이 사용자로부터 로그를 수집할 수 없습니다.
수집하는 로그¶
리모트 로깅을 활성화하면 Hive 콘솔에 입력한 로그 수집 시간 동안 Hive 로그와 앱 로그를 수집합니다.
Warning
로그를 과도하게 많이 수집하면 자원이 네트워크 트래픽과 로그 처리에 집중되어 앱 성능에 영향을 미칠 수 있습니다. 반복문 안에서 발생하는 반복적인 로그는 최대한 생략하거나 하나의 로그로 모아서 수집하는 것을 권장합니다.
Hive 로그¶
Hive 로그란, Hive SDK 코드 내부에서 기본으로 수집하는 로그입니다. 앱에서 제어할 수 없습니다.
앱 로그¶
앱 로그란, Hive SDK에서 제공하는 Logger.log
호출을 앱 클라이언트 코드에 삽입해서 얻는 로그입니다. 앱 클라이언트 코드에서 원하는 위치를 선택해 원하는 값을 수집할 수 있습니다. 원하는 위치에 아래 예시와 같은 코드를 삽입하세요.
API Reference: Logger.log
API Reference: Logger::log
API Reference: Logger.i
API Reference: LogInterface.log
API Reference: Objective-C