Game > Gamebase > Unreal SDK 사용 가이드 > 푸시

여기에서는 플랫폼별로 푸시 알림을 사용하기 위해 필요한 설정 방법을 알아보겠습니다.

Settings

Android나 iOS에서 푸시를 설정하는 방법은 다음 문서를 참고하시기 바랍니다.

  • Android Push Settings
    • Firebase 푸시를 사용한다면 아래 가이드를 참고 바랍니다.
      • 해당 가이드에서 Unity 빌드인 경우는 Unreal의 경우도 동일하게 설정이 필요합니다.
        • Android 빌드 시 res/values/google-services-json.xml 파일이 포함되어야 하므로 가이드를 참고하여 작성합니다.
        • Plugins/Gamebase/Source/Gamebase/ThirdParty/Android/res/values/google-services-json.xml 경로에 파일이 있습니다.
  • iOS Push Settings

Register Push

다음 API를 호출하여, TOAST Push에 해당 사용자를 등록합니다. 푸시 동의 여부(enablePush), 광고성 푸시 동의 여부(enableAdPush), 야간 광고성 푸시 동의 여부(enableAdNightPush) 값을 사용자로부터 받아, 다음의 API 호출을 통해 등록을 완료합니다.

API

Supported Platforms UNREAL_IOS UNREAL_ANDROID

void RegisterPush(const FGamebasePushConfiguration& configuration, const FGamebaseErrorDelegate& onCallback);

Example

void Sample::RegisterPush(bool pushEnabled, bool adAgreement, bool adAgreementNight)
{
    FGamebasePushConfiguration configuration{ pushEnabled, adAgreement, adAgreementNight };

    IGamebase::Get().GetPush().RegisterPush(FGamebasePushConfigurationDelegate::CreateLambda([](const FGamebaseError* error)
    {
        if (Gamebase::IsSuccess(error))
        {
            UE_LOG(GamebaseTestResults, Display, TEXT("RegisterPush succeeded"));
        }
        else
        {
            UE_LOG(GamebaseTestResults, Display, TEXT("RegisterPush failed. (error: %d)"), error->code);
        }
    }));
}

Request Push Settings

사용자의 푸시 설정을 조회하기 위해, 다음 API를 이용합니다. 콜백으로 오는 PushConfiguration 값으로 사용자 설정값을 얻을 수 있습니다.

API

Supported Platforms UNREAL_IOS UNREAL_ANDROID

void QueryPush(const FGamebasePushConfigurationDelegate& onCallback);

Example

void Sample::QueryPush()
{
    IGamebase::Get().GetPush().QueryPush(
        FGamebasePushConfigurationDelegate::CreateLambda([](const FGamebasePushConfiguration* pushAdvertisements, const FGamebaseError* error)
    {
        if (Gamebase::IsSuccess(error))
        {
            UE_LOG(GamebaseTestResults, Display, TEXT("QueryPush succeeded. (pushEnabled= %s, adAgreement= %s, adAgreementNight= %s, displayLanguageCode= %s)"),
                pushAdvertisements->pushEnabled ? TEXT("true") : TEXT("fasle"),
                pushAdvertisements->adAgreement ? TEXT("true") : TEXT("fasle"),
                pushAdvertisements->adAgreementNight ? TEXT("true") : TEXT("fasle"),
                *pushAdvertisements->displayLanguageCode.ToString());
        }
        else
        {
            UE_LOG(GamebaseTestResults, Display, TEXT("QueryPush failed. (error: %d)"), error->code);
        }
    }));
}

Error Handling

Error Error Code Description
PUSH_EXTERNAL_LIBRARY_ERROR 5101 TOAST Push 라이브러리 오류입니다.
DetailCode를 확인하세요.
PUSH_ALREADY_IN_PROGRESS_ERROR 5102 이전 푸쉬 API 호출이 완료되지 않았습니다.
이전 푸쉬 API의 콜백이 실행된 이후에 다시 호출하세요.
PUSH_UNKNOWN_ERROR 5999 정의되지 않은 푸쉬 오류입니다.
전체 로그를 고객 센터에 올려 주시면 가능한 한 빠르게 답변 드리겠습니다.
  • 전체 오류 코드는 다음 문서를 참고하시기 바랍니다.

PUSH_EXTERNAL_LIBRARY_ERROR

  • 이 오류는 TOAST Push 라이브러리에서 발생한 오류입니다.
  • 오류 코드를 확인하는 방법은 다음과 같습니다.
GamebaseError* gamebaseError = error; // GamebaseError object via callback

if (Gamebase::IsSuccess(error))
{
    // succeeded
}
else
{
    UE_LOG(GamebaseTestResults, Display, TEXT("code: %d, message: %s"), error->code, *error->message);

    GamebaseInnerError* moduleError = gamebaseError.error; // GamebaseError.error object from external module
    if (moduleError.code != GamebaseErrorCode::SUCCESS)
    {
        UE_LOG(GamebaseTestResults, Display, TEXT("moduleErrorCode: %d, moduleErrorMessage: %s"), moduleError->code, *moduleError->message);
    }
}
  • TOAST Push 오류 코드를 확인하시기 바랍니다.
TOP