コンソールにイメージを登録した後、ユーザーに告知を表示できます。
イメージ告知を画面に表示します。
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.
...
})
);
}
Parameter | Values | Description |
---|---|---|
BackgroundColor | FColor | バックグラウンド背景色 |
timeOut | int64 | イメージ告知最大ローディング時間(単位: millisecond) default: 5000 |
CloseImageNotices APIを呼び出して現在表示中のイメージ告知を全て終了できます。
API
Supported Platforms ■ UNREAL_ANDROID ■ UNREAL_IOS
void CloseImageNotices();
Gamebaseコンソールに設定した約款を表示します。
ShowTermsView APIは、Webビューで約款ウィンドウを表示します。 GameのUIに合った約款ウィンドウを直接製作したい場合には、QueryTerms APIを呼び出して、 Gamebaseコンソールに設定した約款項目を呼び出すことができます。 ユーザーが約款に同意した場合、各項目の同意有無をUpdateTerms APIを介してGamebaseサーバーに転送してください。
約款ウィンドウを画面に表示します。 ユーザーが約款に同意した場合、同意の有無をサーバーに登録します。 約款に同意した場合、ShowTermsView APIを再度呼び出しても約款ウィンドウが表示されず、すぐに成功コールバックが返されます。 ただし、Gamebaseコンソールで約款再同意項目を必要に変更すると、ユーザーが再度約款に同意するまでは約款ウィンドウが表示されます。
[注意]
- FGamebasePushConfigurationは、約款ウィンドウが表示されていない場合にはnullです(約款ウィンドウが表示された場合、常に有効なオブジェクトが返されます。)。
- FGamebasePushConfiguration.bPushEnabled 値は常にtrueです。
- FGamebasePushConfigurationがnullではない場合、ログイン後に Subsystem->GetPush()->RegisterPush()を呼び出してください。
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) =>
{
...
});
}
}
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)エラーが発生した時は、約款を表示しないように処理してください。
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);
}
})
);
}
Parameter | Values | Description |
---|---|---|
TermsSeq | int32 | 約款全体KEY. updateTerms APIの呼び出し時に必要な値です。 |
TermsVersion | FString | 約款バージョン。 updateTerms APIの呼び出し時に必要な値です。 |
termsCountryType | FString | 約款タイプ。 - KOREAN:韓国約款 - GDPR:EU約款 - ETC:その他約款 |
Contents | TArray |
約款項目情報 |
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 |
QueryTerms APIで取得した約款情報でUIを直接製作した場合、 ゲームユーザーが約款に同意した内容をUpdateTerms APIを通してGamebaseサーバーに転送してください。
選択約款同意をキャンセルするように、約款に同意した内容を変更する目的でも活用できます。
[注意]
プッシュ受信同意状況はGamebaseサーバーに保存されません。 プッシュ受信同意状況はログイン後に Gamebase.Push.RegisterPush APIを呼び出して保存してください。
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);
}
})
);
}
Parameter | Mandatory(M) / Optional(O) | Values | Description |
---|---|---|---|
TermsVersion | M | FString | 約款バージョン。 queryTerms APIを呼び出して取得した値を伝達する必要があります。 |
TermsSeq | M | int32 | 約款全体KEY. queryTerms APIを呼び出して取得した値を伝達する必要があります。 |
Contents | M | List< Content > | 選択約款ユーザー同意情報 |
Parameter | Mandatory(M) / Optional(O) | Values | Description |
---|---|---|---|
TermsContentSeq | M | int32 | 選択約款項目KEY |
bAgreed | M | bool | 選択約款項目同意状況 |
現在約款ウィンドウが画面に表示されているかどうかを知ることができます。
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を表示します。
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));
}
}));
}
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
設定でモバイルモードに変更できます。
Gamebaseで指定しておいたスキームです。
Scheme | 用途 |
---|---|
gamebase://dismiss | WebViewを閉じる |
gamebase://getMaintenanceInfo | メンテナンス内容をWebPageに表示 |
gamebase://getUserId | 現在ログインしているゲームユーザーのユーザーIDを表示 |
gamebase://goBack | 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();
}
次の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);
}
システム通知を表示できます。 システム通知にコールバックを登録することもできます。
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."));
}));
}
次の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 | Error Code | Description |
---|---|---|
UI_IMAGE_NOTICE_TIMEOUT | 6901 | イメージ告知の表示中タイムアウトが発生しました。 |
UI_UNKNOWN_ERROR | 6999 | 不明なエラーです(定義されていないエラーです)。 |