Game > Gamebase > Unreal SDKご利用ガイド > UI

ImageNotice

コンソールにイメージを登録した後、ユーザーに告知を表示できます。

ImageNotice Example

Show ImageNotices

イメージ告知を画面に表示します。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS UNREAL_WINDOWS

void ShowImageNotices(FGamebaseImageNoticeConfiguration& Configuration, const FGamebaseErrorDelegate& CloseCallback, const FGamebaseImageNoticeEventDelegate& EventCallback = {});

Example

void USample::ShowImageNotices(int32 ColorR, int32 ColorG, int32 ColorB, int32 ColorA, int64 TimeOut)
{
    FGamebaseImageNoticeConfiguration Configuration;
    Configuration.BackgroundColor = FColor(ColorR, ColorG, colorB, colorA);
    Configuration.TimeOut = TimeOut;

    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetImageNotice()->ShowImageNotices(Configuration,
        FGamebaseErrorDelegate::CreateLambda([=](const FGamebaseError* Error) {
            // Called when the entire imageNotice is closed.
            ...
        }),
        FGamebaseSchemeEventDelegate::CreateLambda([=](const FString& Scheme, const FGamebaseError* Error) {
            // Called when custom event occurred.
            ...
        })
    );
}

FGamebaseImageNoticeConfiguration

Parameter Values Description
BackgroundColor FColor バックグラウンド背景色
timeOut int64 イメージ告知最大ローディング時間(単位: millisecond)
default: 5000

Close ImageNotices

CloseImageNotices APIを呼び出して現在表示中のイメージ告知を全て終了できます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS

void CloseImageNotices();

Terms

Gamebaseコンソールに設定した約款を表示します。

TermsView Example

ShowTermsView APIは、Webビューで約款ウィンドウを表示します。 GameのUIに合った約款ウィンドウを直接製作したい場合には、QueryTerms APIを呼び出して、 Gamebaseコンソールに設定した約款項目を呼び出すことができます。 ユーザーが約款に同意した場合、各項目の同意有無をUpdateTerms APIを介してGamebaseサーバーに転送してください。

ShowTermsView

約款ウィンドウを画面に表示します。 ユーザーが約款に同意した場合、同意の有無をサーバーに登録します。 約款に同意した場合、ShowTermsView APIを再度呼び出しても約款ウィンドウが表示されず、すぐに成功コールバックが返されます。 ただし、Gamebaseコンソールで約款再同意項目を必要に変更すると、ユーザーが再度約款に同意するまでは約款ウィンドウが表示されます。

[注意]

  • FGamebasePushConfigurationは、約款ウィンドウが表示されていない場合にはnullです(約款ウィンドウが表示された場合、常に有効なオブジェクトが返されます。)。
  • FGamebasePushConfiguration.bPushEnabled 値は常にtrueです。
  • FGamebasePushConfigurationがnullではない場合、ログイン後に Subsystem->GetPush()->RegisterPush()を呼び出してください。

Optionalパラメータ

  • GamebaseTermsConfiguration : GamebaseTermsConfigurationオブジェクトを介して強制的に約款同意ウィンドウを表示するかどうかなどの設定を変更できます。
  • Callback :約款同意後、約款ウィンドウが終了する時、ユーザーにコールバックで伝えます。コールバックで来るGamebaseResponse.DataContainerオブジェクトはGamebaseResponse.Push.PushConfiguration変換してログイン後、Gamebase.Push.RegisterPush APIに使用できます。

FGamebaseTermsConfiguration

API Mandatory(M) / Optional(O) Description
bForceShow O 約款に同意した場合、showTermsView APIを再度呼び出しても約款ウィンドウが表示されませんが、これを無視して強制的に約款ウィンドウを表示します。
default : false
bEnableFixedFontSize O 約款ウィンドウのフォントサイズを固定するかどうかを決定します。
default:false
Android Only

FGamebaseShowTermsViewResult

Parameter Values Description
bIsTermsUIOpened bool true:約款ウィンドウが表示され、ユーザーが同意して約款ウィンドウが終了しました。
false:すでに約款に同意していて、約款ウィンドウが表示されずに約款ウィンドウが終了しました。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS

void ShowTermsView(const FGamebaseDataContainerDelegate& Callback);
void ShowTermsView(const FGamebaseTermsConfiguration& configuration, const FGamebaseDataContainerDelegate& Callback);

ErrorCode

Error Error Code Description
NOT_INITIALIZED 1 Gamebaseが初期化されていません。
LAUNCHING_SERVER_ERROR 2001 ローンチサーバーからダウンロードした項目に約款関連内容がない場合に発生するエラーです。
正常な状況ではないため、Gamebase担当者にお問い合わせください。
UI_TERMS_ALREADY_IN_PROGRESS_ERROR 6924 以前に呼び出されたTerms APIがまだ完了していません。
しばらくしてから再度試行してください。
UI_TERMS_ANDROID_DUPLICATED_VIEW 6925 約款Webビューが終了していないのに再び呼び出されました。
WEBVIEW_TIMEOUT 7002 約款Webビューの表示中にタイムアウトが発生しました。
WEBVIEW_HTTP_ERROR 7003 約款Webビューのオープン中にHTTPエラーが発生しました。

Example

void USample::ShowTermsView()
{
    FGamebaseTermsConfiguration Configuration { true };

    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetTerms()->ShowTermsView(Configuration,
        FGamebaseDataContainerDelegate::CreateLambda([=](const FGamebaseDataContainer* DataContainer, const FGamebaseError* Error) {
            if (Gamebase::IsSuccess(Error))
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("ShowTermsView succeeded."));

                const auto result = FGamebaseShowTermsResult::From(DataContainer);
                if (result.IsValid())
                {
                    // Save the 'PushConfiguration' and use it for RegisterPush() after Login().
                    SavedPushConfiguration = FGamebasePushConfiguration::From(DataContainer);
                }
            }
            else
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("ShowTermsView failed. (Error: %d)"), Error->Code);
            }
        })
    );
}

void USample::AfterLogin()
{
    // Call RegisterPush with saved PushConfiguration.
    if (SavedPushConfiguration != null)
    {
        Gamebase.Push.RegisterPush(SavedPushConfiguration, (Error) =>
        {
            ...
        });
    }
}

QueryTerms

Gamebaseは、単純な形式のWebビューで約款を表示します。 ゲームのUIに合った約款を直接製作したい場合、QueryTerms APIを呼び出してGamebaseコンソールに設定した約款情報を取得して活用できます。

ログイン後に呼び出す場合は、ゲームユーザーが約款に同意したかどうかも一緒に確認できます。

[注意]

  • GamebaseResponse.Terms.ContentDetail.requiredがtrueの必須項目はGamebaseサーバーに保存されないため、bAgreed 値は常にfalseが返されます。
    • 必須項目は常にtrueで保存されるので、保存する意味がないためです。
  • プッシュ受信同意状況もGamebaseサーバーに保存されないため、bAgreed 値は常にfalseが返されます。
    • ユーザーのプッシュ受信同意状況は、Gamebase.Push.QueryPush APIを通して確認してください。
  • コンソールで「基本約款設定」を行わない場合、約款言語と異なる国コードに設定された端末でqueryTerms APIを呼び出すと、UI_TERMS_NOT_EXIST_FOR_DEVICE_COUNTRY(6922)エラーが発生します。
    • コンソールで「基本約款設定」を行ったり、UI_TERMS_NOT_EXIST_FOR_DEVICE_COUNTRY(6922)エラーが発生した時は、約款を表示しないように処理してください。

Requiredパラメータ

  • Callback:API呼び出し結果をユーザーにコールバックで伝えます。コールバックで来るGamebaseResponse.Terms.QueryTermsResultでコンソールに設定された約款情報を取得できます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS UNREAL_WINDOWS

void QueryTerms(const FGamebaseQueryTermsResultDelegate& Callback);

ErrorCode

Error Error Code Description
NOT_INITIALIZED 1 Gamebaseが初期化されていません。
UI_TERMS_NOT_EXIST_IN_CONSOLE 6921 約款情報がコンソールに登録されていません。
UI_TERMS_NOT_EXIST_FOR_DEVICE_COUNTRY 6922 端末国コードに合った約款情報がコンソールに登録されていません。

Example

void USample::QueryTerms()
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetTerms()->QueryTerms(
        FGamebaseQueryTermsResultDelegate::CreateLambda([=](const FGamebaseQueryTermsResult* Data, const FGamebaseError* Error) {
            if (Gamebase::IsSuccess(Error))
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("QueryTerms succeeded."));
            }
            else
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("QueryTerms failed. (Error: %d)"), Error->Code);
            }
        })
    );
}

GamebaseResponse.Terms.QueryTermsResult

Parameter Values Description
TermsSeq int32 約款全体KEY.
updateTerms APIの呼び出し時に必要な値です。
TermsVersion FString 約款バージョン。
updateTerms APIの呼び出し時に必要な値です。
termsCountryType FString 約款タイプ。
- KOREAN:韓国約款
- GDPR:EU約款
- ETC:その他約款
Contents TArray 約款項目情報

GamebaseResponse.Terms.ContentDetail

Parameter Values Description
TermsContentSeq int32 約款項目KEY
Name FString 約款項目名
Required bool 同意必須かどうか
AgreePush FString 広告性プッシュ同意状況
- NONE:同意しない
- ALL:全て同意
- DAY:1週間プッシュ同意
- NIGHT:夜間プッシュ同意
bAgreed bool 該当約款項目に対するユーザーの同意有無
Node1DepthPosition int32 1段階項目表示順序。
Node2DepthPosition int32 2段階項目表示順序。
ない場合 -1
DetailPageUrl FString 約款詳細表示URL。
ない場合null

UpdateTerms

QueryTerms APIで取得した約款情報でUIを直接製作した場合、 ゲームユーザーが約款に同意した内容をUpdateTerms APIを通してGamebaseサーバーに転送してください。

選択約款同意をキャンセルするように、約款に同意した内容を変更する目的でも活用できます。

[注意]

プッシュ受信同意状況はGamebaseサーバーに保存されません。 プッシュ受信同意状況はログイン後に Gamebase.Push.RegisterPush APIを呼び出して保存してください。

Requiredパラメータ

  • Configuration サーバーに登録するユーザーの選択約款情報です。

Optionalパラメータ

  • callback:選択約款情報をサーバーに登録後、ユーザーにコールバックで伝えます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS UNREAL_WINDOWS

void UpdateTerms(const FGamebaseUpdateTermsConfiguration& Configuration, const FGamebaseErrorDelegate Callback);

ErrorCode

Error Error Code Description
NOT_INITIALIZED 1 Gamebaseが初期化されていません。
UI_TERMS_UNREGISTERED_SEQ 6923 登録されていない約款Seq値を設定しました。
UI_TERMS_ALREADY_IN_PROGRESS_ERROR 6924 以前に呼び出されたTerms APIがまだ完了していません。
しばらくしてから再度試行してください。

Example

void USample::UpdateTerms(int32 TermsSeq, const FString& TermsVersion, int32 TermsContentSeq, bool bAgreed)
{
    TArray<FGamebaseTermsContent> Contents;
    Contents.Add(FGamebaseTermsContent { TermsContentSeq, bAgreed });

    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetTerms()->UpdateTerms(
        FGamebaseUpdateTermsConfiguration { TermsSeq, TermsVersion, Contents },
        FGamebaseErrorDelegate::CreateLambda([=](const FGamebaseError* Error) {
            if (Gamebase::IsSuccess(Error))
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("UpdateTerms succeeded."));
            }
            else
            {
                UE_LOG(GamebaseTestResults, Display, TEXT("UpdateTerms failed. (Error: %d)"), Error->Code);
            }
        })
    );
}

GamebaseRequest.Terms.UpdateTermsConfiguration

Parameter Mandatory(M) / Optional(O) Values Description
TermsVersion M FString 約款バージョン。
queryTerms APIを呼び出して取得した値を伝達する必要があります。
TermsSeq M int32 約款全体KEY.
queryTerms APIを呼び出して取得した値を伝達する必要があります。
Contents M List< Content > 選択約款ユーザー同意情報

GamebaseRequest.Terms.Content

Parameter Mandatory(M) / Optional(O) Values Description
TermsContentSeq M int32 選択約款項目KEY
bAgreed M bool 選択約款項目同意状況

IsShowingTermsView

現在約款ウィンドウが画面に表示されているかどうかを知ることができます。

API

bool IsShowingTermsView();

Example

void USample::IsShowingTermsView()
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    bool isShowingTermsView = Subsystem->GetTerms()->IsShowingTermsView();
    UE_LOG(GamebaseTestResults, Display, TEXT("IsShowingTermsView : %s"), isShowingTermsView ? TEXT("true") : TEXT("false"));
}

Webview

Show WebView

WebViewを表示します。

Requiredパラメータ
  • Url:パラメータに転送されるurlは、有効な値である必要があります。
Optionalパラメータ(現在はRequireパラメータですが、今後のバージョンでOptionalに変更予定)
  • Configuration:GamebaseWebViewConfigurationでWebViewのレイアウトを変更できます。
  • closeCallback:WebViewが終了する時、ユーザーにコールバックで伝えます。
  • SchemeList:ユーザーが受け取りたいカスタムSchemeリストを指定します。
  • SchemeEvent:schemeListに指定したカスタムスキームを含むurlをコールバックで伝えます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS UNREAL_WINDOWS

void ShowWebView(const FString& Url, const FGamebaseWebViewConfiguration& Configuration, FGamebaseErrorDelegate& CloseCallback, const TArray<FString>& SchemeList, const FGamebaseSchemeEventDelegate& SchemeEvent);

Example

void USample::ShowWebView(const FString& Url)
{
    FGamebaseWebViewConfiguration Configuration;
    Configuration.Title = TEXT("Title");

    TArray<FString> SchemeList{ TEXT("customScheme://openBrowser") };

    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetWebView()->ShowWebView(Url, Configuration,
        FGamebaseErrorDelegate::CreateLambda([=](const FGamebaseError* Error) {
            Result(ANSI_TO_TCHAR(__FUNCTION__), TEXT("Close webview"));
        }),
        SchemeList,
        FGamebaseSchemeEventDelegate::CreateLambda([=](const FString& Scheme, const FGamebaseError* Error) {
        if (Gamebase::IsSuccess(Error))
        {
            Result(ANSI_TO_TCHAR(__FUNCTION__), true, *FString::Printf(TEXT("Scheme= %s"), *Scheme));
        }
        else
        {
            Result(ANSI_TO_TCHAR(__FUNCTION__), false, GamebaseJsonUtil::UStructToJsonObjectString(*Error));
        }
    }));
}

FGamebaseWebViewConfiguration

Parameter Values Description
Title FString WebViewのタイトル
Orientation GamebaseScreenOrientation::Unspecified 未指定(default)
GamebaseScreenOrientation::Portrait 縦モード
GamebaseScreenOrientation::Landscape 横モード
GamebaseScreenOrientation::LandscapeReverse 横モードを180度回転
ContentMode GamebaseWebViewContentMode::Recommended 現在のプラットフォームの推薦ブラウザ(default)
GamebaseWebViewContentMode::Mobile モバイルブラウザ
GamebaseWebViewContentMode::Desktop デスクトップブラウザ
NavigationColor FColor ナビゲーションバーの色
default: FColor(18, 93, 230, 255)
NavigationBarHeight height ナビゲーションバーの高さ
Androidのみ
bIsNavigationBarVisible true or false ナビゲーションバー有効または無効
default: true
bIsBackButtonVisible true or false 戻るボタンの有効または無効
default: true
BackButtonImageResource ID of resource 戻るボタンの画像
CloseButtonImageResource ID of resource 閉じるボタンの画像
bEnableFixedFontSize true or false 約款ウィンドウの文字サイズを固定するかどうかを決定します。
default: false
Androidのみ
bRenderOutSideSafeArea true or false Safe Area領域外でレンダリングするかどうかを決定します。
default: false
Androidのみ

[TIP]

iPadOS 13以上でWebViewは基本的にデスクトップモードです。 contentMode =GamebaseWebViewContentMode::MOBILE設定でモバイルモードに変更できます。

Predefined Custom Scheme

Gamebaseで指定しておいたスキームです。

Scheme 用途
gamebase://dismiss WebViewを閉じる
gamebase://getMaintenanceInfo メンテナンス内容をWebPageに表示
gamebase://getUserId 現在ログインしているゲームユーザーのユーザーIDを表示
gamebase://goBack WebView戻る

Close WebView

次のAPIを利用して、表示されているWebViewを閉じることができます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS UNREAL_WINDOWS

void CloseWebView();

ExampleCloseWebview

void USample::CloseWebView()
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetWebView()->CloseWebView();
}

Open External Browser

次のAPIを通して外部ブラウザーを開くことができます。パラメータに転送されるurlは有効な値である必要があります。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS

void OpenWebBrowser(const FString& Url);

Example

void USample::OpenWebBrowser(const FString& Url)
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetWebView()->OpenWebBrowser(Url);
}

Alert

システム通知を表示できます。 システム通知にコールバックを登録することもできます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS

void ShowAlert(const FString& Title, const FString& Message);
void ShowAlert(const FString& Title, const FString& Message, const FGamebaseAlertCloseDelegate& CloseCallback);

Example

void USample::ShowAlert(const FString& Title, const FString& Message)
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetUtil()->ShowAlert(Title, Message);
}

void USample::ShowAlertEvent(const FString& Title, const FString& Message)
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetUtil()->ShowAlert(Title, Message, FGamebaseAlertCloseDelegate::CreateLambda([=]()
    {
        UE_LOG(GamebaseTestResults, Display, TEXT("ShowAlert ButtonClick."));
    }));
}

Toast

次のAPIを使用して、簡単にメッセージを表示できます。

API

Supported Platforms UNREAL_ANDROID UNREAL_IOS

void ShowToast(const FString& Message, EGamebaseToastExposureTime ExposureTimeType);

Example

void USample::ShowToast(const FString& Message, EGamebaseToastExposureTime ExposureTimeType)
{
    UGamebaseSubsystem* Subsystem = UGameInstance::GetSubsystem<UGamebaseSubsystem>(GetGameInstance());
    Subsystem->GetUtil()->ShowToast(Message, ExposureTimeType);
}

Error Handling

Error Error Code Description
UI_IMAGE_NOTICE_TIMEOUT 6901 イメージ告知の表示中タイムアウトが発生しました。
UI_UNKNOWN_ERROR 6999 不明なエラーです(定義されていないエラーです)。
  • エラーコードの一覧は、次の文書を参照してください。
TOP