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);
        }
    }));
}

Setting for APNS Sandbox

  • SandboxMode를 켜면, APNS Sandbox로 Push를 발송하도록 등록할 수 있습니다.
  • 콘솔 발송 방법
    • Push 메뉴의 대상에서 iOS Sandbox를 선택한 후 발송합니다.

API

Supported Platforms UNREAL_IOS

void SetSandboxMode(bool isSandbox);

Example

void Sample::SetSandboxMode(bool isSandbox)
{
    IGamebase::Get().GetPush().SetSandboxMode(isSandbox);
}

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