Hive SDKを初期化する方法¶
ゲームでHive SDK機能を使用するには、Hive SDKを初期化する必要があります。初期化後、Hive コンソールに登録されたサービス利用規約や更新および通知ポップアップが自動的に表示されます。
Warning
hive_config.xml ファイルを初期化する前に設定するのを忘れないでください Hive SDK。
初期化の仕組み¶
Hive SDKが初期化されると、次の機能を実行します:
- Hive SDKは、1つの初期化関数で以下の項目を初期化します。
- 認証: Hive クライアントを初期化し、ユーザーIdPを認証します
- プロモーション: 広告を行い、クーポンを発行します
- 通知: ユーザーへのプッシュメッセージを管理し、設定します
- マーケティングアトリビューション: 広告やイベント分析を通じてプレイヤー数などのユーザーデータを追跡するサードパーティモジュールの総合管理をサポートします
- Hive SDKは、アプリのアクセス権限を直接通知しません。詳細については、[FAQ]を確認してください。
- 関連ゲームのために設定された更新および通知ポップアップを表示します。Google Playストアの場合、アプリ内更新がサポートされています。更新ポップアップの登録の詳細については、Hive コンソールガイドを参照してください。
- ユーザーのIPを確認し、国別の利用規約を表示します。
アプリ内更新¶
アプリ内更新 は、更新ポップアップの設定に従って、アプリを終了することなくバックグラウンドでアプリを更新する機能です。アプリ内更新は、以下の条件の下で使用できます。
- Google Playストアのみサポートされています。
- Androidモバイル、Androidタブレット、およびChromeOSデバイスのみサポートされています。
- アプリファイル形式はAAB(Android App Bundle)とAPKの両方をサポートしています。ただし、APK拡張ファイル(*.obb*ファイル)はサポートされていません。
- AABの場合、最大200MBがサポートされ、APKの場合、最大150MBがサポートされています。
Hive 初期化ダイアグラム¶
Note
利用規約のポップアップが表示され、利用規約の同意が完了すると、iOS の App Tracking Transparency ポップアップが表示されます。
Hive 認証キーの登録¶
ConfigurationクラスAPIを使用して、Hiveコンソールページで発行されたHive認証キーをHive初期化の前に登録します。対応するAPIはバージョン4.15.0以上から提供されています。
APIリファレンス: Unity®
API リファレンス: C++
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
string hiveCertKey = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAzNzc4OTU2LCJqdGkiOiIxODczMTExMzIwIn0.OxWo4R6UdI0BLP1ckt8RlMFrPAb5H7TNedmLFV1Cawc";
Configuration::setHiveCertificationKey(hiveCertKey);
APIリファレンス: Kotlin
APIリファレンス: Java
API リファレンス: Swift
API リファレンス: Objective-C
初期化の実装¶
Hive SDKを初期化するには、AuthV4クラスにsetup()
メソッドを実装してください。以下のデータが結果として提供されるので、ゲーム内にデータを保存し、必要に応じて利用できます。
- Hive 初期化の結果データ
フィールド名 | 説明 | 例 |
---|---|---|
isAutoSignIn | 自動ログインが利用可能かどうか | true |
did | didはアプリインストール時に作成されるアプリインスタンスの識別子です。同じアプリのアプリインスタンスを識別するために使用されます。 | 123456789 |
providerTypeList | 現在のアプリに対する利用可能なIdPリスト カスタマイズされた明示的ログインを使用する際やIdP同期ステータスの情報を構成する際に必要な フィールドです。 | ProviderType.FACEBOOK ProviderType.HIVE |
以下はsetup()
メソッドを実装するためのサンプルコードです。
APIリファレンス: AuthV4::setup
// リクエスト Hive SDK 初期化
AuthV4::setup([=](ResultAPI const & result, bool isAutoSignIn, std::string did, std::vector<ProviderType> const & providerTypeList) {
if (result.isSuccess()) {
// 初期化が成功しました。自動ログインが有効かどうかに基づいてログインを処理します。
} else if (result.needExit()) {
// TODO: アプリの終了を実装する
// Cocos2d-xエンジンのユーザー
// 例) exit(0);
// Unrealエンジンのユーザー
// 例) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
} else {
// 初期化に失敗しました }
});
#include "HiveAuthV4.h"
FHiveAuthV4::Setup(FHiveAuthV4OnSetupDelegate::CreateLambda([this](const FHiveResultAPI& Result,
bool IsAutoSignIn,
const FString& Did,
const TArray<EHiveProviderType>& ProviderTypeArray)
{
if (Result.IsSuccess()) {
// 初期化が成功しました。自動ログインが有効かどうかに基づいてログインを処理します。
} else if (Result.NeedExit()) {
// TODO: アプリの終了を実装する
// Cocos2d-xエンジンのユーザー
// 例) exit(0);
// 初期化に失敗しました }
}
}));
APIリファレンス: com.hive.AuthV4.setup
// リクエスト Hive SDK 初期化
AuthV4.setup(object: AuthV4.AuthV4SetupListener{
override fun onAuthV4Setup(result: ResultAPI, isAutoSignIn: Boolean, did: String?, providerTypeList: ArrayList<AuthV4.ProviderType>?) { if (result.isSuccess) {
// 初期化が成功しました。自動ログインが有効かどうかに基づいてログインを処理します。
} else if (result.needExit()) {
// TODO: アプリの終了を実装する
// 例) exitProcess(0)
} else {
// 初期化に失敗しました } } })
APIリファレンス: com.hive.AuthV4.setup
// リクエスト Hive SDK 初期化
AuthV4.setup(new AuthV4.AuthV4SetupListener() {
@Override
public void onAuthV4Setup(ResultAPI result, boolean isAutoSignIn, String did, ArrayList<AuthV4.ProviderType> providerTypeList) {
if (result.isSuccess()) {
// 初期化が成功しました。自動ログインが有効かどうかに基づいてログインを処理します。
} else if (result.needExit()) {
// TODO: アプリの終了を実装します
// 例) System.exit(0);
} else {
// 初期化に失敗しました } } });
API リファレンス: HIVEAuthV4:setup
APIリファレンス: HIVEAuthV4:setup
// リクエスト Hive SDK 初期化
[HIVEAuthV4 setup:^(HIVEResultAPI *result, BOOL isAutoSignIn, NSString *did, NSArray<NSNumber *> *providerTypeList) {
if (result.isSuccess) {
// 初期化が成功しました。自動ログインが有効かどうかに基づいてログインを処理します。
} else if (result.needExit) {
// TODO: アプリの終了を実装する
// 例) exit(0);
} else {
// 初期化に失敗しました } }];
Note
ゲームサービスが終了した場合、setup
メソッドが実行されるとエラーが返されます。
サーバーメンテナンスポップアップ¶
ゲームサービスでは、ゲームクライアントの更新後にバージョンをブロックする必要があるか、ゲームサーバーのメンテナンス中にゲーム接続をブロックする必要があります。 Hive は、Hive コンソールに設定された情報に従って、強制ゲーム更新、通知/サーバーメンテナンスの順序でポップアップを表示する機能を提供します。ゲーム内では、Hive SDK が提供する UI を使用するか、Hive から情報を受け取ってカスタマイズされた UI を実装することができます。
フォースによるゲームアップデート | 特定のバージョンのゲームを使用するためのブロックと、アップデートのリンクを提供します |
---|---|
サーバーメンテナンス | ゲームサーバーによってメンテナンスステータスを設定でき、サーバーメンテナンス中にゲームごとの公式コミュニティリンクを提供することを推奨します |
通知 | すべてのユーザーに強制的ではない重要な通知や更新情報を公開するために使用します |
Note
-
更新/メンテナンスポップアップは初期化ステップの一部です。サーバーメンテナンスポップアップは、自動選択または手動選択に関係なく、サーバー選択のステップでも表示されるべきですので、メンテナンスポップアップが適切に表示されるように実装してください。
-
ユーザーがゲームサーバーに接続する前にゲームを開始せずに待つことができる場合、サーバーメンテナンスのポップアップをすでに設定していても、現時点でユーザーの接続をブロックすることはできません。これに対して、ゲームがユーザーの接続を強制的に終了できる時点でサーバーメンテナンスのポップアップを表示する必要があります。
ゲームサーバーが複数ある場合、ユーザーによって選択または設定されたゲームサーバー情報はHiveに設定されなければなりません。ユーザーがゲームサーバーを選択する必要がある場合、さまざまな種類のポップアップを表示する前に、ConfigurationクラスのsetServerId()メソッドを呼び出してHive設定を変更するためのサーバー選択UIを実装してください。Hive設定を変更してプロモーションニュースデータを更新したい場合は、setServerId()メソッドの代わりにConfigurationクラスのupdateServerId()
メソッドを呼び出してください。
ゲームサーバーが設定された後、いつでもポップアップを表示できます。Hive コンソールにポップアップを設定すると、メンテナンス中にゲームアクセスがブロックされます。ポップアップの表示は、Hive SDK が提供する UI を使用するか、Hive からの情報に基づいてカスタマイズすることができます。サーバーメンテナンスポップアップ/更新ポップアップ/通知ポップアップは、各ゲームサーバーに設定できます。
ポップアップ内容の設定¶
Hive コンソールでサーバーメンテナンスポップアップ/更新ポップアップ/通知ポップアップの詳細を設定します。設定に関する詳細は、操作 > プロビジョニングガイドを参照してください。
ポップアップを表示¶
Hive SDKはメンテナンスポップアップ/更新ポップアップ/通知ポップアップを表示するか、ポップアップメッセージの情報を返してポップアップをカスタマイズします。 Hive が表示する場合、ポップアップは Hive のUIスタイルで表示されますが、自分で行いたい場合は、好きなスタイルでポップアップを表示できます。 Hive ポップアップを使用しているかどうかに応じて、以下のようにパラメータを設定してAuthV4クラスのcheckMaintenance()メソッドを呼び出します。
- Hiveを提供するポップアップの使用例:
isShow
パラメータをtrue
に設定します。 -
ポップアップをカスタマイズするためのポップアップデータのリクエスト:
isShow
パラメータをfalse
に設定します。ポップアップデータに関する詳細は、以下のHiveによって返されるポップアップデータを参照してください。
以下は、Hiveによって提供されたUIを使用してサーバーメンテナンスのポップアップを表示する例のコードです。サーバーメンテナンスが完了していないときにユーザーがこのポップアップを閉じると、終了イベントが発火し、ResultAPI result
に転送されます。
APIリファレンス: Unity®
#include "HiveAuthV4.h"
// Hive SDK UI を使用するかどうか
bool bIsShow = true;
FHiveAuthV4::CheckMaintenance(bIsShow, FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
if (Result.IsSuccess()) {
// 検査データがない場合
// isShowがfalseの場合
} else if (Result.NeedExit()) {
// TODO: アプリ終了機能を実装する
// 例) Application.Quit();
}
}));
APIリファレンス: C++
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Whether to use Hive SDK UI
bool isShow = true;
AuthV4::checkMaintenance(isShow, [=](ResultAPI const & result, vector const & maintenanceInfolist){
if (result.isSuccess()) {
// 登録された検査データがない場合
// isShowがfalseの場合
}
else if (reuslt.needExit()) {
// TODO: アプリ終了機能を実装する
// Cocos2d-xエンジンユーザー
// 例) exit(0);
// Unreal Engineユーザー
// 例) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
}
});
APIリファレンス: Kotlin
import com.hive.AuthV4
import com.hive.AuthV4
import com.hive.ResultAPI
// Hive SDK UIを使用するかどうか
val isShow = true
AuthV4.checkMaintenance(isShow, object : AuthV4.AuthV4MaintenanceListener {
override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {
if (result.isSuccess) {
// 登録された検査データがない場合
// isShowがfalseの場合
}
else if (result.needExit()) {
// TODO: アプリ終了機能を実装する
// 例) exitProcess(0)
}
}
})
APIリファレンス: Java
import com.hive.AuthV4;
import com.hive.ResultAPI;
// Hive SDK UIを使用するかどうか
boolean isShow = true;
AuthV4.INSTANCE.checkMaintenance(isShow, (result, maintenanceInfo) -> {
if (result.isSuccess()) {
// 登録された検査データがない場合
// isShowがfalseの場合
}
else if (result.needExit()) {
// TODO: アプリ終了機能を実装する
// 例) System.exit(0);
}
});
APIリファレンス: Swift
APIリファレンス: Objective-C
#import <HIVEService/HIVEService-Swift.h>
// Hive SDK UIを使用するかどうか
BOOL isShow = YES;
[HIVEAuthV4 checkMaintenance:isShow handler: ^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {
if (result.isSuccess) {
// 登録された検査データがない場合
// isShowがfalseの場合
}
else if (result.needExit) {
// TODO: アプリ終了機能を実装する
// 例) exit(0);
}
}];
Note
サーバーメンテナンスのポップアップを確認している時と、詳細表示ボタンをクリックした時に、iOSとAndroidはアプリをゲーム側で閉じるよう要求するコールバックを送信します。アプリ終了を要求するコールバックを受け取ったら、アプリを終了してください。ユーザーが閉じる(X)ボタンをクリックすると、ポップアップのみが閉じられ、アプリ終了を要求するコールバックは送信されません。
Hiveによって返されたポップアップデータ¶
HiveがcheckMaintenance()メソッドを通じてHiveコンソールに設定されたポップアップ情報のリクエストを受け取ると、AuthV4MaintenanceInfoオブジェクト内の以下の表に要約された値を返します。この値がnullとして返される場合、ポップアップする内容はありません。
AuthV4MaintenanceInfo
オブジェクトの詳細
フィールド名 | 説明 | タイプ |
---|---|---|
title | ポップアップのタイトル | 文字列 |
message | ポップアップの内容 | 文字列 |
button | ポップアップボタンのラベルのテキスト | 文字列 |
action | ユーザーがポップアップボタンをタップしたときのアクションタイプ + OPEN_URL: 外部ブラウザによって渡されたURLを実行 + EXIT: アプリを終了 + DONE: メンテナンスポップアップを閉じるだけ | AuthV4MaintenanceActionTypeの列挙型 |
url | 外部ブラウザによって表示されるURL。action フィールドの値がOPEN_URLのときに有効 | 文字列 |
remainingTime | メンテナンス完了までの残り時間(単位:秒)。時間はリアルタイムで更新され、ゼロになるとアプリが終了します。 | 整数 |
startDate | メンテナンスの開始日 | 文字列 |
endDate | メンテナンスの終了日 | 文字列 |
customerButton | カスタマーセンターのボタンテキスト(メンテナンスポップアップは""を送信) | 文字列 |
customerLink | カスタマーセンターのボタンリンク(メンテナンスポップアップは""を送信) | 文字列 |
exButtons | ポップアップボタン情報(最大3項目が配信されます) | JSONArray |
exButtons.action | ポップアップボタンがクリックされたときのアクション + OPEN_URL: 外部ブラウザによって渡されたURLを実行 + EXIT: アプリを終了 + DONE: メンテナンスポップアップを閉じるだけ | AuthV4MaintenanceActionTypeの列挙型 |
exButtons.button | ポップアップボタンのラベルテキスト | 文字列 |
exButtons.url | 外部ブラウザに渡されるURL。 action OPEN_URLのフィールド値がある場合のみ有効 | 文字列 |
Hive ウェブビュー¶
利用規約¶
初期化の時点で、Hive SDKは、ユーザーのアクセスIPおよびゲーム開発会社によって自動的に決定された国に適した利用規約(「規約」)を公開します。それにもかかわらず、ゲームは、利用規約およびプライバシーポリシーへのリンクを、利用規約およびプライバシーポリシーへの同意に関係なく、すべてのユーザーに提供する必要があります。Hiveが提供するリンクを使用すると、Hive Consoleの設定に応じて、適切な利用規約およびポリシーが自動的に選択されてユーザーに公開されます。利用規約およびポリシーのリンクを表示する方法は、ゲーム開発会社によって異なります。
ボタンやリンクをクリックしたときに利用規約を表示するには、**AuthV4**クラスのshowTerms()
メソッドを呼び出します。以下はサンプルコードです。
利用規約の同意履歴を削除する¶
ゲームユーザーが初めてゲームを実行する際に利用規約に同意すると、その同意の記録はデバイスに残ります。以下のresetAgreement
メソッドは、この履歴を削除します。
Note
Hive SDK 4.22.0以降、ゲームユーザーがアカウントを削除し、その後再度ゲームを実行すると、削除されたアカウントに同意した情報が残っているため、利用規約の同意ポップアップが表示されないという問題があります。アカウントを削除した後にHive SDKをリセットする際に利用規約の同意ポップアップを再表示したい場合は、resetAgreement
を呼び出して以前に保存された利用規約の同意情報を削除する必要があります。その後、AuthV4.setup()
を呼び出してHive SDKを初期化してください。
Hive プロフィール¶
プロフィール画面を表示するには、AuthV4クラスのshowProfile()
を呼び出します。プロフィール画面が表示されると、ユーザーは自分のプロフィール画像とニックネームを確認および変更できます。
以下は、 プロフィールを表示するための例コードです。
APIリファレンス: AuthV4.showProfile
API リファレンス: AuthV4::showProfile
APIリファレンス: AuthV4.showProfile
APIリファレンス: AuthV4.INSTANCE.showProfile
APIリファレンス: AuthV4Interface.showProfile
API リファレンス: [HIVEAuthV4 showProfile]
メンバーシップ IdPを提供する場合、Hive メンバーシップは、Hive プロファイル画面の Hive アカウント設定でパスワード変更とメンバーシップ退会を提供しますので、showProfile()
を**必ず**実装する必要があります。
他のIdPのみを提供しても、Hive メンバーシップIdPを提供しない場合でも、プロフィール画面を表示することで、外国からのログインをブロックしたり、すべてのデバイスからログアウトしたり、ログイン履歴を確認したりするなどのセキュリティ機能を提供できます。したがって、プロフィール画面を表示するためにshowProfile()
を実装することをお勧めします。FacebookのようなIdPと統合されている場合、プロフィール画像やニックネームを返すと、そのIdPから提供された画像とニックネームが自動的にプロフィール画面に設定されます。
お問い合わせ¶
Hiveプラットフォームのユーザー向けのカスタマーサービスシステムとして、各ゲームのFAQと問い合わせを提供します。この機能は、HiveのウェブサイトやHiveのモバイルウェブでも利用可能です。HiveカスタマーサービスにアクセスするためのボタンでCSコード(PlayerID)を表示し、ユーザーがゲームに関する質問を投稿できるようにします。
Note
- Hive のカスタマーサービスは、ゲストユーザーにも利用可能です。
- カスタマーサービスリンクの表示方法は、ゲーム出版会社によって異なります。
- 1:1の問い合わせを除き、ポリシーの問題によりメールアドレスや電話番号の表示は禁止されています。
問い合わせページを表示するには、**AuthV4**クラスのshowInquiry()
メソッドを呼び出します。 以下は問い合わせページを表示するためのサンプルコードです。
APIリファレンス: AuthV4.showInquiry
APIリファレンス: AuthV4 ::showInquiry
APIリファレンス: AuthV4.showInquiry
APIリファレンス: AuthV4.INSTANCE.showInquiry
APIリファレンス: AuthV4Interface .showInquiry
API リファレンス: [ HIVEAuthV4 showInquiry]
私の問い合わせショートカット¶
Hive メンバーシップと同期されたユーザーは、マイインクワイアリのショートカットを通じて自分の問い合わせ履歴を確認できます。AuthV4 クラスで showMyInquiry()
メソッドを呼び出して、ユーザーがあなたのゲームについて問い合わせを行い、簡単に解決できるようにします。ただし、ユーザーが Hive モバイルまたはウェブサイトを通じて問い合わせを行った場合、Hive ID と CS コード(PlayerID)が指定されていても、ユーザーが Hive メンバーシップにログインしているかどうかが不明なため、問い合わせは公開されません。
Note
- ユーザーがログインしている場合にのみ、Hive メンバーシップで My Inquiry ショートカット API を実装できます。他の IdP と同期して API を呼び出そうとすると、エラーメッセージが返されます。
- Auth v4 では、UID を発行するために Hive メンバーシップとアカウントをリンクする必要があります。したがって、ユーザーがゲストとしてログインするか、Hive メンバーシップ以外の IdP でログインした場合、Auth v4 では My Inquiry ショートカットを実装できません。
以下は、My Inquiryショートカットを公開するためのサンプルコードです。
APIリファレンス: hive.AuthV4 .showMyInquiry
APIリファレンス: AuthV4:: showMyInquiry
APIリファレンス: AuthV4.showMyInquiry
APIリファレンス: com.hive .AuthV4.showMyInquiry
APIリファレンス: AuthV4Interface .showMyInquiry
APIリファレンス: HIVEAuthV4:: showMyInquiry
Hive チャットボット CS¶
チャットボットによる問い合わせ¶
チャットボットページを表示するには、**AuthV4**クラスのshowChatbotInquiry()
メソッドを呼び出します。
引数 | タイプ | 説明 |
---|---|---|
additionalInfo | 文字列 | チャットボットページを公開する際に送信するデータ "{ \"init_path\":\"hive_sdk_api\" }" として固定され、追加の値が必要な場合は、**Leading Development Team, Com2uS Platform**に連絡してください |
以下は、チャットボットページを介して問い合わせを表示するためのサンプルコードです。
APIリファレンス: hive .AuthV4.showChatbotInquiry
#include "HiveAuthV4.h"
// チャットボットページショートカットAPIを呼び出すときに配信されることが約束されたJSON形式の文字列データ
TSharedPtr<FJsonObject> AdditionalInfoJson = MakeShareable(new FJsonObject);
AdditionalInfoJson->SetStringField(TEXT("init_path"), TEXT("hive_sdk_api"));
FString StrAdditionalInfo;
TSharedRef<TJsonWriter<>> JsonWriter = TJsonWriterFactory<>::Create(&StrAdditionalInfo);
FJsonSerializer::Serialize(AdditionalInfoJson.ToSharedRef(), JsonWriter);
FHiveAuthV4::ShowChatbotInquiry(StrAdditionalInfo, FHiveAuthV4OnShowInquiryDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// call successful
}
}));
APIリファレンス: AuthV4 ::showChatbotInquiry
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// String data in JSON format promised to be delivered when calling the chatbot page shortcut API
string additionalInfo = "{ \"init_path\":\"hive_sdk_api\" }";
AuthV4::showChatbotInquiry(additionalInfo, [=](ResultAPI const &result) {
if (result.isSuccess()) {
// call successful
}
});
APIリファレンス: AuthV4.showChatbotInquiry
import com.hive.AuthV4
import com.hive.ResultAPI
// チャットボットページショートカットAPIを呼び出すときに提供されるJSON形式の文字列データ
val additionalInfo = "{ \"init_path\":\"hive_sdk_api\" }"
AuthV4.showChatbotInquiry(additionalInfo, object : AuthV4.AuthV4ShowChatbotInquiryListener {
override fun onAuthV4ShowChatbotInquiry(result: ResultAPI) {
if (result.isSuccess) {
// 呼び出し成功
}
}
})
APIリファレンス: com.hive .AuthV4.showChatbotInquiry
APIリファレンス: AuthV4Interface.showChatbotInquiry
APIリファレンス: HIVEAuthV4:: showChatbotInquiry
チャットボット設定¶
チャットボットの**AppDelegate**は、iOSアプリの最上部にあるオブジェクトの共通アクション(メソッド)を定義します。Xcodeでプロジェクトをビルドすると、自動的にクラスが生成されます。
Hive SDKは、ユーザーの便宜のためにチャットボットUIをポートレートモードのみで公開します。この機能をiOSで実行するには、ゲームエンジンの**AppDelegate**クラス内のapplication(_:supportedInterfaceOrientationsFor:)
メソッドに関連する画面の向きに関する機能が必要です。このメソッドは、ゲームで使用するためのUIInterfaceOrientationMask値を返します。ランドスケープ専用のゲームではランドスケープを返し、ポートレート専用のゲームではポートレートを返し、すべてのタイプをサポートするゲームではランドスケープとポートレートの両方を返します。
Warning
Unityエンジンにはすでに画面回転のための**AppDelegate**メソッドが含まれているため、Xcodeでプロジェクトをビルドすると自動的に実行されます。つまり、Unityでゲームを開発する場合は、以下のサンプルコードをゲームに追加しないでください。
Note
チャットボットサービスは、AppID登録プロセスのために**ソリューションアーキテクト部分、Com2uSプラットフォーム**をリクエストした後に利用可能です。
// ゲームエンジンがObjective-cの場合は、次のAppDelegate関数を実装してください。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
// TODO: 横向きのみ
return UIInterfaceOrientationMaskLandscape;
// TODO: 縦向きのみ
return UIInterfaceOrientationMaskPortrait;
// TODO: 横向きと縦向きの両方
return UIInterfaceOrientationMaskAll;
}
iPadでのポートレートモード専用のチャットボットは、以下の追加設定でXcodeプロジェクトをビルドする必要があります。
コミュニティへの露出¶
自動ログイン処理とコミュニティの正常な運用のために、以下に示すようにAPI呼び出しを通じてコミュニティサイトを公開してください。Hive 規定に従ったコミュニティサイトを設定する際に、*withhive.com*や*com2us.com*以外のカスタムドメインアドレスを使用したい場合は、ドメインアドレスをHive Consoleホワイトリストに登録し、その後このAPIを呼び出してください。
Hiveコミュニティの自動ログインやその他の機能のために、以下のAPI呼び出しを通じてコミュニティページを公開してください。
Note
Windows環境では、公開されるコミュニティページがフレームとして開かれる場合、セキュリティ上の問題からページにX-Frame-Optionsヘッダーが設定されていると、ページがレンダリングされません。フレーム形式で開きたいページのオプションを確認してください。
APIリファレンス: SocialV4 .showCommunity
#include "HiveSocialV4.h"
// 表示タイプを設定する (フルスクリーン: full screen, フレーム: frame screen)
ESocialV4ViewType ViewType = ESocialV4ViewType::Frame;
FHiveSocialV4::ShowCommunity(ESocialV4ProviderType::HIVE, ViewType, FHiveSocialV4OnShowCommunityDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// call successful
}
}));
APIリファレンス: SocialV4 .showCommunity
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// ビュータイプを設定する (フルスクリーン: full screen, フレーム: frame screen)
SocialV4::ViewType viewType = SocialV4::ViewType::Frame;
SocialV4.showCommunity(SocialV4::ProviderType::HIVE, viewType, (ResultAPI const & result) {
if (result.isSuccess()) {
// 呼び出し成功
}
});
API リファレンス: SocialV4.showCommunity
import com.hive.SocialV4
import com.hive.ResultAPI
// ビュータイプを設定する(フルスクリーン: full screen, フレーム: frame screen)
val viewType = SocialV4.ViewType.Frame
SocialV4.showCommunity(SocialV4.ProviderType.HIVE, viewType, object : SocialV4.SocialV4ShowCommunityListener{
override fun onShowCommunity(result: ResultAPI) {
if (result.isSuccess) {
// 呼び出し成功
}
}
})
APIリファレンス: SocialV4.INSTANCE .showCommunity
APIリファレンス: SocialV4Interface.showCommunity
APIリファレンス: HIVESocialV4 showCommunity
#import <HIVEService/HIVEService-Swift.h>
// ビュータイプを設定する (フルスクリーン: full screen, フレーム: frame screen)
HIVESocialViewType viewType = HIVESocialViewTypeFrame;
[HIVESocialV4 showCommunity: HVIESocialProviderTypeHIVE viewType: viewType handler: ^(HIVEResultAPI *result) {
if ([result isSuccess]) {
// 成功した呼び出し
}
}];
リモートロギングの実装¶
リモートロギングは、クライアントからHiveサーバーにデバッグログを送信することによって、公開されたアプリのログをリモートで確認するための機能です。この機能を実装するには、Hiveコンソールに登録してください。この機能は、対象ユーザーのリモートログをのみ有効にします。登録方法の詳細については、操作 > プロビジョニング > リモートロギングの操作ガイドを参照してください。
-
アクティベーション
リモートロギングを有効にすると、Hive SDK ログとゲームログが、Hive コンソールで設定した期間中に収集されます。Hive SDK ログは SDK の設定に基づいており、ゲームログはゲーム開発者が値を設定できるよう柔軟です。Warning
必ず確認してください
-
もしログが多すぎると、ネットワークトラフィックが過負荷になったり、ログ処理がゲームの実行に干渉する可能性があります。 Hive は、ループタイプから繰り返しのログを省略するか、リモートロギングを実装するために配信前に1つのログにまとめることをお勧めします。
-
ゲームログのリモートロギングを使用する予定がある場合は、事前にGAMEVIL COM2US PLATFORMのソリューションアーキテクト部門のPICに連絡してください。
-
-
ターゲティング
リモートログは、少なくとも一度Hive SDKの初期化を通じてデバイスID(DID)を持つユーザーのみを対象とします。ただし、SDKの初期化前にクラッシュやエラーが発生した場合、一部のゲームではこの機能は利用できません。 -
サンプルコード
ゲームがログを収集する必要があるすべての部分に以下のコードを挿入してください。
APIリファレンス: Logger .log
API リファレンス: Logger:: log
APIリファレンス: Logger.i
APIリファレンス: LogInterface.log
APIリファレンス: Objective-C
リモート設定¶
Hive SDKは、ゲームがアプリの各バージョンに1対1でマッピングされたゲームサーバーURLを管理できるようにします。リモート構成は、**Configuration**クラスのgetMetaData()
APIを呼び出すことで文字列の形式で提供されます。以下は、リモート構成を呼び出す例のコードです。
APIリファレンス: HiveConfiguration getMetaData
#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()) {
// 呼び出し成功
}
}));
API リファレンス: Configuration:: getMetaData
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// データキー
string key = "game_server_url";
// データが更新されているか
bool forceReload = false;
// メタデータ呼び出し
Configuration::getMetaData(key, forceReload, [=](ResultAPI const & result, string value) {
if (result.isSuccess()) {
// 呼び出し成功
}
});
APIリファレンス: Configuration.getMetaData
import com.hive.Configuration
import com.hive.ResultAPI
// データキー
val key = "game_server_url"
// データが更新されているか
val forceReload = false
// メタデータ呼び出し
Configuration.getMetaData(key, forceReload, object : Configuration.GetMetaDataListener {
override fun onGetMetaData(result: ResultAPI, data: String) {
if (result.isSuccess) {
// 呼び出し成功
}
}
})
APIリファレンス: Configuration.INSTANCE .getMetaData
API リファレンス: ConfigurationInterface.getMetaData
APIリファレンス: HIVEConfiguration getMegaData
Note
キャッシュデータを使用するには、forceReload
をfalse
に設定します。
forceReload
がtrue
のときにgetMetaDate()
メソッドを呼び出すと、ローカルに保存されたデータが削除され、サーバーから最新のデータを取得しようとします。このアクションは、アプリを再実行する際のリフレッシュなどのタスクに一般的に使用されます。