アドオン
Facebookの友達リストを持ってくる¶
getProviderFriendsList()
メソッドは、同じゲームにいるユーザーのFacebook友達のPlayerIDを提供します。Facebook同期なしでプレイしている人は友達リストに表示されず、以前に同期した人はPlayerIDとして-1を返します。
Warning
Facebookは2018年5月にプラットフォームAPIへの基本的なアクセス許可項目を説明するポリシーを改訂しました。今後、Facebookの/user/friends
APIを使用するには、user_friends
の許可が必要です。
Facebookアプリレビューのガイドラインを確認する
APIリファレンス: hive.AuthV4.getProviderFriendsList
using hive;
AuthV4.ProviderType providerType = AuthV4.ProviderType.FACEBOOK;
AuthV4.getProviderFriendsList (providerType, (ResultAPI result, AuthV4.ProviderType providerType, Dictionary<String, Int64> providerUserIdList) => {
if (!result.isSuccess()) {
return;
}
if (providerUserIdList != null) {
foreach (KeyValuePair<String, Int64> providerUserId in providerUserIdList ) {
// providerUserId: providerUserId.Key
// playerId: providerUserId.Value
}
}
});
#include "HiveAuthV4.h"
EHiveProviderType TargetProviderType = EHiveProviderType::FACEBOOK;
FHiveAuthV4::GetProviderFriendsList(TargetProviderType,
FHiveAuthV4OnGetProviderFriendsListDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHiveProviderType& ProviderType, const ProviderFriendsMap& ProviderUserIdList) {
// (alias) using ProviderFriendsMap = TMap<FString, int64>;
if (!Result.IsSuccess()) {
return;
}
for (const auto& ProviderUserIdEntry : ProviderUserIdList) {
// ProviderUserId: ProviderUserIdEntry.Key;
// Player Id: ProviderUserIdEntry.Value;
}
}));
APIリファレンス: AuthV4::getProviderFriendsList
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
ProviderType providerType = ProviderType::FACEBOOK;
AuthV4::getProviderFriendsList (providerType, [=](ResultAPI const & result, ProviderType providerType, map<string,PlayerID> providerUserIdList) {
if (!result.isSuccess()) {
return;
}
if (providerUserIdList != null) {
for(auto i = providerUserIdList.begin() ; i != providerUserIdList.end(); i++)
{
// providerUserId: ( i->first).c_str()
// playerId: i->second
}
}
});
APIリファレンス: com.hive.AuthV4.getProviderFriendsList
import com.hive.AuthV4
import com.hive.ResultAPI
val providerType = AuthV4.ProviderType.FACEBOOK
AuthV4.getProviderFriendsList(providerType, object : AuthV4.AuthV4ProviderFriendsListener {
override fun onGetProviderFriendsList(result: ResultAPI, providerType: AuthV4.ProviderType, providerUserIdList: Map<String, Long>?) {
if (!result.isSuccess) {
return
}
providerUserIdList?.forEach {
// providerUserId: it.key
// playerId: it.value
}
}
})
APIリファレンス: com.hive.AuthV4.getProviderFriendsList
import com.hive.AuthV4;
import com.hive.ResultAPI;
AuthV4.ProviderType type = AuthV4.ProviderType.FACEBOOK;
AuthV4.INSTANCE.getProviderFriendsList(type, (result, providerType, providerUserIdList) -> {
if (!result.isSuccess()) {
return;
}
if (providerUserIdList != null) {
for (Map.Entry<String, Long> entry : providerUserIdList.entrySet()) {
// providerUserId: entry.getKey();
// playerId: entry.getValue();
}
}
});
API リファレンス: AuthV4Interface.getProviderFriendsList
import HIVEService
AuthV4Interface.getProviderFriendsList(.Facebook) { result, retProviderType, providerUserIdList in
if !result.isSuccess() {
return
}
if let providerUserIdList = providerUserIdList {
for (key in providerUserIdList.keys) {
// providerUserId: key
// playerId: providerUserIdList[key]
}
}
}
APIリファレンス: HIVEAuthV4:getProviderFriendsList
#import <HIVEService/HIVEService-Swift.h>
[HIVEAuthV4 getProviderFriendsList: HIVEProviderTypeFACEBOOK handler: ^(HIVEResultAPI *result, HIVEProviderType retProviderType, NSDictionary<NSString *,NSNumber *> *providerUserIdList) {
if (!result.isSuccess()) {
return;
}
if (providerUserIdList != nil) {
for (NSString *key in providerUserIdList) {
// providerUserId: key
// playerId: [[providerUserIdList objectForKey:key] longlongValue];
}
}
}];
COPPAに応じる¶
子供のオンラインプライバシー保護法(COPPA)は、13歳未満の子供のプライバシーをオンラインで保護することを目的としたアメリカ合衆国の連邦法です。COPPAに対応するために、Hive プラットフォームは、ユーザーが13歳未満かどうかを照会するための getAgeGateU13()
API を含む Hive SDK v4.10.0 をリリースしました。このAPIは、プレイヤーの年齢が13歳未満の場合に true
を返します。
サンプルコード¶
APIリファレンス: AuthV4.getAgeGateU13
APIリファレンス: AuthV4 ::getAgeGateU13
APIリファレンス: AuthV4.getAgeGateU13
APIリファレンス: AuthV4.INSTANCE.getAgeGateU13
API リファレンス: AuthV4Interface.getAgeGateU13
APIリファレンス: HIVEAuthV4 getAgeGateU13
何が変わったか¶
ageGateU13()
がtrue
を返す場合、以下が実装されます。
- iOS
- プッシュ通知を呼び出すときに
AuthV4.setup()
またはAuth.initialize()
を呼び出しても、合意要求ポップアップが表示されません。 - プッシュAPIは実装されていません。
- プッシュ通知を呼び出すときに
- Android
- ゲームをもっと見るボタンが終了ポップアップを表示するときに表示されません。
- リモートプッシュを受信できず、プッシュAPIは実装されていません。
GDPR適用国における16歳未満のユーザーの利用規約同意の確認¶
Hive SDK v4 24.2.0 から、GDPR(一般データ保護規則)の影響を受ける国で、16歳未満のユーザーが条件に同意したかどうかを、Configuration.getAgeGateU16Agree()
メソッドを使用して確認できます。返される値が true
の場合、16歳未満のユーザーが条件に同意したことを意味します。false
の場合は、同意していないことを意味します。サードパーティのライブラリを使用する場合、ユーザーが16歳未満かどうかに基づいてアプリの機能を制限する必要がある場合は、Configuration.getAgeGateU16Agree()
メソッドを利用できます。
法定代理人の同意確認¶
Hive SDK v4 24.3.0 から、アプリが法定代理人の同意確認条項を使用している場合、Configuration.getLegalGuardianConsentAgree()
メソッドを呼び出すことで、アプリユーザーが法定代理人の同意を得たかどうかを取得できます。値が true
の場合、同意が与えられたことを示します。
OSの権限を再要求¶
ゲームをプレイするために必要なアクセス許可リストは、AndroidManifest.xmlファイルに整理されています。関連するAPIの文字列リストとしていくつかの許可を送信してみてください。ユーザーが特定の許可に対してオプトインまたはオプトアウトしたかどうかを確認できます。もし危険な許可のいくつかが拒否された場合、OSへのアクセスを再度要求するポップアップを表示することを確認してください。他の許可は、ユーザーのデバイスの設定に応じて自動的にオプトインまたはオプトアウトされます。誤った許可や誤った単語を入力すると、システムはAndroidManifest.xmlファイルに許可が宣言されていないと見なし、許可へのアクセスが許可されません。
Android 6.0 (APIレベル23)はこの機能をサポートしています。OSがiOSであるか、Android APIレベルが23未満の場合、ResultAPIはサポートされていないとして送信されます。
Note
この機能はAndroid専用です。
サンプルコード¶
APIリファレンス: PlatformHelper .requestUserPermissions
String[] requestArray = {"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.BLUETOOTH", "android.permission.READ_CONTACTS"};
List<String> requests = new List<String>(requestArray);
PlatformHelper.requestUserPermissions( requests, (ResultAPI result, String[] granted, String[] denied) => {
if (result.code == ResultAPI.Code.PlatformHelperOSNotSupported) {
//Androidのみ
}
if (result.code == ResultAPI.Code.PlatformHelperOSVersionNotSupported) {
//Android OSバージョンはサポートされていません。
}
if (granted != null && granted.Length > 0) {
foreach (String name in granted) {
// リクエストの中で受け入れられた権限のリスト
}
}
if (denied != null && denied.Length > 0) {
foreach (String name denied) {
// リクエストの中で拒否された権限のリスト
}
}
});
#include "HivePlatformHelper.h"
TArray<FString> Requests;
Requests.Add(TEXT("android.permission.WRITE_EXTERNAL_STORAGE"));
Requests.Add(TEXT("android.permission.READ_CONTACTS"));
FHivePlatformHelper::RequestUserPermissions(Requests, FHivePlatformHelperOnUserPermissionsDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FString>& GrantedRequests, const TArray<FString>& DeniedRequests) {
switch(Result.Code) {
case FHiveResultAPI::ECode::Success: {
if (GrantedRequests.Num() > 0) {
// リクエストの中で受け入れられた権限のリスト
}
if (DeniedRequests.Num() > 0) {
// リクエストの中で拒否された権限のリスト
}
}
break;
case FHiveResultAPI::ECode::PlatformHelperOSVersionNotSupported:
// Android OS バージョンはサポートされていません。
break;
default:
// その他の例外
break;
}
}));
APIリファレンス: PlatformHelper ::requestUserPermissions
string requestArray[] = {"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.BLUETOOTH", "android.permission.READ_CONTACTS"};
vector<string> requests(begin(requestArray), end(requestArray));
PlatformHelper::requestUserPermissions(requests, [=](ResultAPI const & result, vector<string> const & granted, vector<string> const & denied) {
if (result.code == hive::ResultAPI::PlatformHelperOSNotSupported) {
//Androidのみ
}
if (result.code == hive::ResultAPI::PlatformHelperOSVersionNotSupported) {
//Android OSバージョンはサポートされていません。
}
if (!granted.empty()) {
for (string name : granted) {
// リクエストの中で受け入れられた権限のリスト
}
}
if (!denied.empty()) {
for (string name : denied) {
// リクエストの中で拒否された権限のリスト
}
}
});
APIリファレンス: PlatformHelper.requestUserPermissions
import com.hive.PlatformHelper
import com.hive.ResultAPI
val requests = arrayListOf(
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.BLUETOOTH",
"android.permission.READ_CONTACTS"
)
PlatformHelper.requestUserPermissions(requests, object : PlatformHelper.RequestUserPermissionsListener {
override fun onRequestUserPermissions(result: ResultAPI, granted: List<String>, denied: List<String>) {
when (result.code) {
ResultAPI.Code.Success -> {
if (granted.isNotEmpty()) {
// リクエストの中で受け入れられた権限のリスト
}
if (denied.isNotEmpty()) {
// リクエストの中で拒否された権限のリスト
}
}
ResultAPI.Code.PlatformHelperOSVersionNotSupported -> {
// Android OS バージョンはサポートされていません。
}
else -> {
// その他の例外状況
}
}
}
})
APIリファレンス: PlatformHelper .INSTANCE.requestUserPermissions
import com.hive.PlatformHelper;
import com.hive.ResultAPI;
List<String> requests = Arrays.asList(
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.BLUETOOTH",
"android.permission.READ_CONTACTS");
PlatformHelper.INSTANCE.requestUserPermissions(requests, (result, granted, denied) -> {
switch (result.getCode()) {
case Success:
if (!granted.isEmpty()) {
// リクエストの中で受け入れられた権限のリスト
}
if (!denied.isEmpty()) {
// リクエストの中で拒否された権限のリスト
}
break;
case PlatformHelperOSVersionNotSupported:
// Android OS バージョンはサポートされていません。
break;
default:
// その他の例外状況
break;
}
});
デバイス管理サービスを使用する¶
デバイス管理サービスは、Hive コンソールの設定に従ってログイン時に自動的に実装されます。ログイン後、ゲームはAuthV4クラスのshowDeviceManagement()
メソッドを呼び出し、ユーザーにデバイス管理リストを表示します。
デバイス認証の失敗によりログインがキャンセルされた場合、デバイス管理サービスを持つゲームは、再度サイレントログインを試みるか、ログアウトを実行するためにResult APIのAuthV4NotRegisteredDevice
コードを処理する必要があります。デバイス管理サービスに関する詳細は、操作ガイドを参照してください: デバイス管理サービスの紹介。
API リファレンス: AuthV4.showDeviceManagement
APIリファレンス: AuthV4 ::showDeviceManagement
APIリファレンス: AuthV4.showDeviceManagement
APIリファレンス: AuthV4.INSTANCE .showDeviceManagement
APIリファレンス: AuthV4Interface .showDeviceManagement
APIリファレンス: HIVEAuthV4 showDeviceManagement
Google Playゲームの実績とリーダーボード¶
Google Play Gamesでゲームを特集してもらうには、Google Play Gamesの実績とリーダーボード機能を実装する必要があります。
ユーザーがIdPの中からGoogleアカウントでゲームにサインインすると、自動的にPlay Games Services(PGS)にサインインされるため、実績やリーダーボードが利用可能になります。ユーザーがPGSの設定画面からサインアウトした場合、プレイヤーアカウントはゲーム内のサインアウトボタンがタップされたときと同様にサインアウトされます。PGSの機能に関する詳細については、Google Play Games Servicesガイドを参照してください。
Note
AuthV4Helperクラスを実装する場合、
-
ユーザーがゲームをロード中にPGSへの暗黙のログインをキャンセルした場合、システムはその状態を記憶し、再度暗黙のログインを試みません。プレイヤーセッションが有効な間に自動ログインが可能であっても、システムは拒否された状態を記憶します。
-
ユーザーがPGSにサインインしない場合、成果の結果はPGSに送信されません。
この内容はGoogle Play Games Servicesガイドに準拠しています。
プレイヤーIDを送信¶
Google Play GamesにPlayerIDをリクエストする必要がある場合は、ProviderGoogleクラスにgetGooglePlayerId()
メソッドを実装してください。このメソッドを実装することで、PlayerIDとAuthCodeが送信され、セッションキーが検証されます。
以下はサンプルコードです。
APIリファレンス: hive.ProviderGoogle.getGooglePlayerId
APIリファレンス: ProviderGoogle::getGooglePlayerId
// Google Play GamesからplayerIDをリクエストします。
ProviderGoogle::getGooglePlayerId([=](ResultAPI const &result, std::string const &googlePlayerId, std::string const &authCode) {
if (result.isSuccess())
{
// API呼び出しに成功しました。
}
});
APIリファレンス: com.hive.ProviderGoogle.getGooglePlayerId
達成¶
ProviderGoogleクラスを実装して、Hive SDKを通じてGoogle Play GamesのAchievement機能を使用します。
隠された実績を明らかにするリクエスト¶
現在サインインしているプレイヤーに隠された実績を表示するには、achievementsReveal()
メソッドを呼び出します。これは効果はありませんが、0%の実績を明らかにします。 以下はサンプルコードです。
APIリファレンス: hive.ProviderGoogle.achievementsReveal
APIリファレンス: ProviderGoogle::achievementsReveal
APIリファレンス: ProviderGoogle.achievementsReveal
import com.hive.ProviderGoogle
import com.hive.ResultAPI
//Achievement ID
val achievementId = "abcdef123456"
ProviderGoogle.achievementsReveal(achievementId, object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// call successful
}
}
})
APIリファレンス: ProviderGoogle .INSTANCE.achievementsReveal
実績を解除するリクエスト¶
現在サインインしているプレイヤーに実績を解除するには、achievementsUnlock()
メソッドを呼び出します。このメソッドは、実績のステータスに関係なく、100%の実績をマークします。隠れているかどうかに関わらず。 以下はサンプルコードです。
API リファレンス: ProviderGoogle.achievementsUnlock
APIリファレンス: ProviderGoogle::achievementsUnlock
APIリファレンス: ProviderGoogle.achievementsUnlock
import com.hive.ProviderGoogle
import com.hive.ResultAPI
//成果 ID
val achievementId = "abcdef123456"
ProviderGoogle.achievementsUnlock(achievementId, object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// 呼び出し成功
}
}
})
APIリファレンス: ProviderGoogle .INSTANCE.achievementsUnlock
実績を増やすリクエスト¶
リクエスト関数を使用して成果を増加させるには、成果値をパラメータとして設定し、その後achievementsIncrement()
メソッドを呼び出します。成果値は、対応するAPIが呼び出されたときに設定された値の合計であり、合計が最大になると自動的に成果が達成されます。
以下はサンプルコードです。
APIリファレンス: hive.ProviderGoogle.achievementsIncrement
#include "HiveProviderGoogle.h"
//達成 ID
FString AchievementId = TEXT("abcdef123456");
// 達成数
int32 Value = 1;
FHiveProviderGoogle::AchievementsIncrement(AchievementId, Value, FHiveProviderGoogleOnAchievementsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// call successful
}
}));
APIリファレンス: ProviderGoogle::achievementsIncrement
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
//Achievement ID
string achievementId = "abcdef123456";
// Achievement numbers
int value = 1;
ProviderGoogle::achievementsIncrement(achievementId, value, [=](ResultAPI const & result) {
if(result.isSuccess()){
// call successful
}
});
APIリファレンス: ProviderGoogle.achievementsIncrement
import com.hive.ProviderGoogle
import com.hive.ResultAPI
//達成 ID
val achievementId = "abcdef123456"
// 達成数
val value = 1
ProviderGoogle.achievementsIncrement(achievementId, value, object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// 成功した呼び出し
}
}
})
実績リストを表示するリクエスト (ヘルパー)¶
Note
SDK 4.7.0はヘルパーを提供します。これにより、ユーザーのデバイス上のサインインしたアカウントとPlayerIDと同期されたアカウントを簡単に比較できます。2つのアカウントが同じでない場合は、状況を処理するためにIdP Syncページを参照してください。
Google Play Gamesの実績リストを要求するには、showAchievements()
メソッドを呼び出してください。
以下はサンプルコードです。
APIリファレンス: AuthV4.Helper.showAchievements
using hive;
AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を達成し、実績を示す
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowAchievements(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
switch (Result.Code) {
case FHiveResultAPI::ECode::Success:
// 成功を達成し、成果を示す
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// アカウントの衝突
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
}));
APIリファレンス: AuthV4 ::Helper::showAchievements
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
AuthV4::Helper::showAchievements([=](ResultAPI const & result, shared_ptr playerInfo) {
switch (result.code) {
case ResultAPI::Success:
// 成功を達成し、成果を示す
break;
case ResultAPI::AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
APIリファレンス: AuthV4.Helper.showAchievements
import com.hive.AuthV4
import com.hive.ResultAPI
AuthV4.Helper.showAchievements(object : AuthV4.Helper.AuthV4HelperListener {
override fun onAuthV4Helper(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {
when (result.code) {
ResultAPI.Code.Success -> {
// 成功を達成し、成果を示す
}
ResultAPI.Code.AuthV4ConflictPlayer -> {
// アカウントの競合
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
}
else -> {
// その他の例外状況
}
}
}
})
APIリファレンス: AuthV4.Helper.INSTANCE.showAchievements
import com.hive.AuthV4;
import com.hive.ResultAPI;
AuthV4.Helper.INSTANCE.showAchievements((result, playerInfo) -> {
switch (result.getCode()) {
case Success:
// 成功を達成し、成果を示す
break;
case AuthV4ConflictPlayer:
// アカウントの競合
break;
case AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
Warning
ユーザーがPlay Games Servicesの設定画面からサインアウトすると、プレイヤーアカウントがサインアウトされ、ResultAPI.Code.AuthV4GoogleLogoutというエラーコードがコールバックとして送信されます。サインアウトが完了すると、ログアウトポップアップが表示され、ゲームタイトルに変更が表示されます。
実績リストを表示するリクエスト (Auth v4)¶
Google Play Gamesの実績リストを要求するには、showAchievements()
メソッドを呼び出してください。
以下はサンプルコードです。
APIリファレンス: ProviderGoogle .showAchievements
using hive;
ProviderGoogle.showAchievements((ResultAPI result) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を達成し、成果を示す
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
#include "HiveProviderGoogle.h"
FHiveProviderGoogle::ShowAchievements(FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
case FHiveResultAPI::ECode::Success:
// Achievementsを表示し、Successを渡す
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Playからログアウト後、ゲームからもログアウトを実行
// ゲームの再実行は開発スタジオで処理する必要があります
break;
default:
// その他の例外状況
break;
}));
APIリファレンス: ProviderGoogle ::showAchievements
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
ProviderGoogle::showAchievements([=](ResultAPI const & result) {
switch (result.code) {
case ResultAPI::Success:
// 成功を達成指示と共に提供
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
APIリファレンス: ProviderGoogle.showAchievements
import com.hive.ProviderGoogle
import com.hive.ResultAPI
ProviderGoogle.showAchievements(object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
when(resultAPI.code) {
ResultAPI.Code.Success -> {
// 成功を達成指示と共に届ける
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが対応する必要があります
}
else -> {
// その他の例外状況
}
}
}
})
APIリファレンス: ProviderGoogle.INSTANCE.showAchievements
import com.hive.ProviderGoogle;
import com.hive.ResultAPI;
ProviderGoogle.INSTANCE.showAchievements(resultAPI -> {
switch (resultAPI.getCode()) {
case Success:
// 成功を達成し、成果を示す
break;
case AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
Warning
ユーザーがPlay Games Servicesの設定画面からサインアウトすると、ResultAPI.Code.AuthV4GoogleLogoutという名前のエラーコードがコールバックとして送信されます。このエラーが送信されたら、ゲーム内のサインアウトボタンがタップされたときと同じようにコードを記述してください。
リーダーボード¶
ProviderGoogle クラスを実装して、Hive SDK を通じて Google Play Games の Leaderboard 機能を使用します。
リーダーボードのスコア更新¶
Google Play Gamesのリーダーボードスコアの更新をリクエストするには、leaderboardsSubmitScore()
メソッドを呼び出してください。
以下はサンプルコードです。
APIリファレンス: hive.ProviderGoogle.leaderboardsSubmitScore
#include "HiveProviderGoogle.h"
// リーダーボードID
FString LeaderboardId = TEXT("12345abcde");
// リーダーボードのスコア番号
int64 Score = 100;
FHiveProviderGoogle::LeaderboardsSubmitScore(LeaderboardId, Score, FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API呼び出し成功
}
}));
APIリファレンス: ProviderGoogle::leaderboardsSubmitScore
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// リーダーボードID
string leaderboardId = "12345abcde";
// リーダーボードのスコア番号
long score = 100;
ProviderGoogle::leaderboardsSubmitScore(leaderboardId, score, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// API call successful
}
});
APIリファレンス: ProviderGoogle.leaderboardsSubmitScore
import com.hive.ProviderGoogle
import com.hive.ResultAPI
// リーダーボードID
val leaderboardId = "12345abcde"
// リーダーボードスコア番号
val score = 100L
ProviderGoogle.leaderboardsSubmitScore(leaderboardId, score, object : ProviderGoogle.GoogleLeaderboardsListener {
override fun onLeaderboardsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// API呼び出し成功
}
}
})
API リファレンス: com.hive.ProviderGoogle.leaderboardsSubmitScore
リーダーボードリストを表示するリクエスト (ヘルパー)
showLeaderboards()
メソッドを呼び出して、Google Play Gamesのリーダーボードリストをリクエストします。
以下はサンプルコードです。
APIリファレンス: hive.AuthV4.Helper.showLeaderboard
using hive;
AuthV4.Helper.showLeaderboard ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を届けてリーダーボードを表示
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI.CodeAuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowLeaderboard(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
case FHiveResultAPI::ECode::Success:
// 成功を届けてリーダーボードを表示
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// アカウントの競合
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}));
APIリファレンス: com.hive.AuthV4.Helper.showLeaderboard
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
AuthV4::Helper::showLeaderboard([=](ResultAPI const & result, shared_ptr playerInfo) {
switch (result.code) {
case ResultAPI::Success:
// 成功を届けてリーダーボードを表示
break;
case ResultAPI::AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
break;
}
});
APIリファレンス: Helper.showLeaderboard
import com.hive.AuthV4
import com.hive.ResultAPI
AuthV4.Helper.showLeaderboard(object : AuthV4.Helper.AuthV4HelperListener {
override fun onAuthV4Helper(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {
when (result.code) {
ResultAPI.Code.Success -> {
// 成功を届け、リーダーボードを表示
}
ResultAPI.Code.AuthV4ConflictPlayer -> {
// アカウントの競合
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
}
else -> {
// その他の例外状況
}
}
}
})
APIリファレンス: AuthV4.Helper.INSTANCE.showLeaderboard
import com.hive.AuthV4;
import com.hive.ResultAPI;
AuthV4.Helper.INSTANCE.showLeaderboard((result, playerInfo) -> {
switch (result.getCode()) {
case Success:
// 成功を届けてリーダーボードを表示
break;
case AuthV4ConflictPlayer:
// アカウントの競合
break;
case AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
Warning
ユーザーがPlay Games Servicesの設定画面からサインアウトすると、プレイヤーアカウントがサインアウトされ、ResultAPI.Code.AuthV4GoogleLogoutというエラーコードがコールバックとして送信されます。サインアウトが完了すると、ログアウトポップアップが表示され、ゲームタイトルに変更が表示されます。
リーダーボードリストを表示するリクエスト (Auth v4)¶
showLeaderboards()
メソッドを呼び出して、Google Play Gamesのリーダーボードリストをリクエストします。
以下はサンプルコードです。
APIリファレンス: hive.ProviderGoogle.showLeaderboards
using hive;
ProviderGoogle.showLeaderboards(onLeaderboardsResult, (ResultAPI result) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を届け、リーダーボードを表示
break;
case ResultAPI.CodeAuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
#include "HiveProviderGoogle.h"
FHiveProviderGoogle::ShowLeaderboard(FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
case FHiveResultAPI::ECode::Success:
// 成功を届けてリーダーボードを表示
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}));
APIリファレンス: ProviderGoogle::showLeaderboards
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
ProviderGoogle::showLeaderboard([=](ResultAPI const & result) {
switch (result.code) {
case ResultAPI::Success:
// 成功を届けてリーダーボードを表示
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
APIリファレンス: ProviderGoogle.showLeaderboards
import com.hive.ProviderGoogle
import com.hive.ResultAPI
ProviderGoogle.showLeaderboards(object : ProviderGoogle.GoogleLeaderboardsListener {
override fun onLeaderboardsResult(resultAPI: ResultAPI) {
when(resultAPI.code) {
ResultAPI.Code.Success -> {
// 成功を届けてリーダーボードを表示
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
}
else -> {
// その他の例外状況
}
}
}
})
APIリファレンス: com.hive.ProviderGoogle.showLeaderboards
import com.hive.ProviderGoogle;
import com.hive.ResultAPI;
ProviderGoogle.INSTANCE.showLeaderboards(resultAPI -> {
switch (resultAPI.getCode()) {
case Success:
// 成功を届けてリーダーボードを表示
break;
case AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウト
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
Warning
ユーザーがPlay Games Servicesの設定画面からサインアウトすると、ResultAPI.Code.AuthV4GoogleLogoutという名前のエラーコードがコールバックとして送信されます。このエラーが送信されたら、ゲーム内のサインアウトボタンがタップされたときと同じプロセスでコーディングすることを確認してください。
Appleゲームセンターのゲーム実績とリーダーボード¶
Apple Game Centerでゲームを特集してもらうには、Apple Game Centerの実績とリーダーボード機能を適用する必要があります。
ユーザーの認証ステータスに関係なく、Apple Game Centerの2つの機能はHive SDKによって提供されます。つまり、実績とリーダーボードはApple Game Centerアカウントを使用しますが、このアカウントはHiveアカウントにリンクされていないか、プレイヤーが現在サインインしているHiveアカウントとは異なる場合があります。
Apple Game Centerの機能に関する詳細は、Apple Game Center Guideを参照してください。
Note
iOS EnterpriseはApple Game Centerをサポートしていません。
達成¶
ProviderApple クラスを実装して、Hive SDK を通じて Apple Game Center の Achievement 機能を使用します。
要求された成果リスト¶
実績リストを読み込むには、loadAchievements()
メソッドを呼び出します。
以下はサンプルコードです。
APIリファレンス: hive.ProviderApple.loadAchievements
// Request achievement list to Provider Apple
// using hive
// Appleプロバイダーへの成果リストのリクエストを管理するコールバックハンドラー
public void onLoadAchievements(ResultAPI result, List achievementList) {
Logger.log("ProviderTestView.onLoadAchievements() コールバック\nresult = " + result.toString() + "\n");
if (result.isSuccess() != true)
return;
}
// プロバイダーAppleに実績リストをリクエストする
ProviderApple.loadAchievements(onLoadAchievements);
APIリファレンス: ProviderApple::loadAchievements
APIリファレンス: HIVEProviderApple::showAchievements:
実績報告のリクエスト¶
成果を報告するには、reportAchievement()
メソッドを呼び出し、**成果率**と**成功した成果の通知バナーの表示**にパラメータを設定します。
以下はサンプルコードです。
API リファレンス: hive .ProviderApple.reportAchievement
using hive;
//達成率 %. 達成率は100で完了しました
String achievementPercent = "100";
//達成が成功したときにトップバナーを表示するかどうか。デフォルトはfalse
Boolean isShow = true;
//達成ID
String achievementId = "com.hivesdk.achievement.10hit";
ProviderApple.reportAchievement(achievementPercent, isShow, achievementId, (ResultAPI result) => {
if (result.isSuccess()) {
// call successful
}
});
#include "HiveProviderApple.h"
//達成達成 %. 達成は100で完了しました
FString Percent = TEXT("100");
// 達成が成功したときにトップバナーを表示するかどうか。デフォルトはfalse
bool bIsShow = true;
// 達成ID
FString AchievementId = TEXT("com.hivesdk.achievement.10hit");
FHiveProviderApple::ReportAchievement(Percent, bIsShow, AchievementId, FHiveProviderAppleOnReportAchievement::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API呼び出し成功
}
}));
APIリファレンス: ProviderApple ::reportAchievement
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
//達成率 %. 達成率は100で完了しました
string achievementPercent = "100";
// 達成が成功したときにトップバナーを表示するかどうか。デフォルトはfalse
bool isShow = true;
//達成ID
string achievementId = "com.hivesdk.achievement.10hit";
ProviderApple::reportAchievement(achievementPercent, isShow, achievementId, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// call successful
}
});
API リファレンス: ProviderApple.reportAchievement
import HIVEService
//達成が達成されました %. 達成は100で完了しました
letachievementPercent = "100"
//達成が成功したときにトップバナーを表示するかどうか。デフォルトはfalse
let isShow = true
//達成ID
let achievementId = "com.hivesdk.achievement.10hit"
ProviderApple.reportAchievement(achievementPercent, showsCompletionBanner: isShow, achievementIdentifier: achievementId) { result in
if result.isSuccess() {
// call successful
}
}
APIリファレンス: HIVEProviderApple reportAchievement
#import <HIVEService/HIVEService-Swift.h>
//達成率 %. 達成率が100のときに達成完了
NSString *achievementPercent = @"100";
// 達成が成功したときにトップバナーを表示するかどうか。デフォルトはNO
BOOL isShow = YES;
//達成ID
NSString *achievementId = @"com.hivesdk.achievement.10hit";
[HIVEProviderApple reportAchievement: achievementPercent showsCompletionBanner: isShow achievementIdentifier: achievementId handler: ^(HIVEResultAPI *result) {
if ([result isSuccess]) {
// call successful
}
}];
実績UIを表示するリクエスト (ヘルパー)¶
Note
SDK 4.7.0は、ユーザーデバイス上のサインインしたアカウントとPlayerIDと同期されたアカウントを簡単に比較するHelperを提供します。2つのアカウントが異なる場合は、状況を処理するためにIdP Syncページを参照してください。
達成 UI を表示するには、showAchievements()
メソッドを呼び出します。
以下はサンプルコードです。
APIリファレンス: hive.AuthV4.Helper.showAchievements
using hive;
AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を達成し、成果を示す
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowAchievements(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
switch (Result.Code) {
case FHiveResultAPI::ECode::Success:
// 成功を達成し、成果を示す
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// アカウントの競合
break;
default:
// その他の例外状況
break;
}
}));
APIリファレンス: AuthV4 ::Helper::showAchievements
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
AuthV4::Helper::showAchievements([=](ResultAPI const & result, shared_ptr playerInfo) {
switch (result.code) {
case ResultAPI::Success:
// 成功を達成し、成果を示します
break;
case ResultAPI::AuthV4ConflictPlayer:
// アカウントの競合
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// Google Playからログアウトした後、ゲームからもログアウトする
// ゲームの再起動は開発スタジオが処理する必要があります
break;
default:
// その他の例外状況
break;
}
});
APIリファレンス: AuthV4Interface .helper().showAchievements
APIリファレンス: [ HIVEAuthV4 helper] showAchievements
// 現在ログインしている Hive アカウントが GameCenter に接続されていない場合
// 自動的に GameCenter への接続を試みます
#import <HIVEService/HIVEService-Swift.h>
[[HIVEAuthV4 ヘルパー] showAchievements: ^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
switch ([result getCode]) {
case HIVEResultAPICodeSuccess:
// 成功を達成し、成果を示す
break;
case HIVEResultAPICodeAuthV4ConflictPlayer:
// アカウントの競合
break;
default:
// その他の例外状況
break;
}
}];
実績UIを表示するリクエスト¶
成果UIを表示するには、showAchievements()
メソッドを呼び出します。
以下はサンプルコードです。
APIリファレンス: ProviderApple.showAchievements
APIリファレンス: ProviderApple::showAchievements
APIリファレンス: ProviderApple.showAchievements
APIリファレンス: HIVEProviderApple showAchievements
実績のリセットのリクエスト¶
成果をリセットするには、resetAchievements()
メソッドを実装してください。
以下はサンプルコードです。
APIリファレンス: hive.ProviderApple.resetAchievements
APIリファレンス: ProviderApple ::resetAchievements
API リファレンス: resetAchievements(_:)
API リファレンス: HIVEProviderApple showAchievements<
リーダーボード¶
**ProviderApple**クラスを実装して、Hive SDKを通じてApple Game Centerの**Leaderboard**機能を使用します。
リーダーボードスコアの報告依頼¶
Apple Game Centerにリーダーボードスコアを報告するには、reportScore()
メソッドを呼び出します。
以下はサンプルコードです。
API リファレンス: hive .ProviderApple.reportScore
#include "HiveProviderApple.h"
FString PlayerScore = TEXT("1234");
FString LeaderBoardId = TEXT("com.hivesdk.leaderboard.10hit");
FHiveProviderApple::ReportScore(PlayerScore, LeaderBoardId, FHiveProviderAppleOnReportLeaderboard::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API呼び出し成功
}
}));
APIリファレンス: ProviderApple ::reportScore
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
string playerScore = "1234";
string leaderBoardId = "com.hivesdk.leaderboard.10hit";
ProviderApple::reportScore(playerScore, leaderBoardId, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// call successful
}
});
API リファレンス: HIVEProviderApple ::reportScore:leaderboardIdentifier:handler:
#import <HIVEService/HIVEService-Swift.h>
NSString *playerScore = @"1234";
NSString *leaderBoardId = "com.hivesdk.leaderboard.10hit";
[HIVEProviderApple reportScore: playerScore leaderboardIdentifier: leaderBoardId handler: ^(HIVEResultAPI *result) {
if ([result isSuccess]) {
// call successful
}
}];
リーダーボードUIを表示するリクエスト (ヘルパー)¶
リーダーボードUIを表示するには、showLeaderboard()
メソッドを呼び出します。
以下はサンプルコードです。
APIリファレンス: hive .AuthV4.Helper.showLeaderboard
// 現在ログイン中の Hive アカウントが GameCenter に接続されていない場合
// 自動的に GameCenter への接続を試みます
hiveを使用しています;
AuthV4.Helper.showLeaderboard((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// 成功を届けてリーダーボードを表示
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// アカウントの競合
break;
default:
// その他の例外状況
break;
}
});
API リファレンス: AuthV4 ::Helper::showLeaderboard
// 現在ログインしている Hive アカウントが GameCenter に接続されていない場合
// 自動的に GameCenter に接続を試みます
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
AuthV4::Helper::showLeaderboard([=](ResultAPI const & result, shared_ptr<PlayerInfo> playerInfo) {
switch (result.code) {
case ResultAPI::Success:
// 成功を届けてリーダーボードを表示
break;
case ResultAPI::AuthV4ConflictPlayer:
// アカウントの競合
break;
default:
break;
}
});
APIリファレンス: showLeaderboard
APIリファレンス: HIVEProviderApple ::showLeaderboard:
// 現在ログインしている Hive アカウントが GameCenter に接続されていない場合
// 自動的に GameCenter に接続を試みます
#import <HIVEService/HIVEService-Swift.h>
[[HIVEAuthV4 ヘルパー] showLeaderboard: ^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
switch ([result getCode]) {
case HIVEResultAPICodeSuccess:
// 成功を届けてリーダーボードを表示
break;
case HIVEResultAPICodeAuthV4ConflictPlayer:
// アカウントの競合
break;
default:
// その他の例外状況
break;
}
}];
リーダーボードUIを表示するリクエスト¶
リーダーボードUIを表示するには、showLeaderboard()
メソッドを呼び出します。
以下はサンプルコードです。
APIリファレンス: hive .ProviderApple.showLeaderboard
APIリファレンス: ProviderApple ::showLeaderboard
API リファレンス: showLeaderboard(_:)
APIリファレンス: HIVEProviderApple ::showLeaderboard:
ソーシャルメディアに写真を投稿する¶
ユーザーは、ゲームを通じてデバイスのギャラリーから写真をインポートすることで、Facebookに写真を共有および投稿できます。以下はサンプルコードです:
API リファレンス: SocialV4. sharePhoto
APIリファレンス: SocialV4::sharePhoto
API リファレンス: SocialV4.sharePhoto
APIリファレンス: SocialV4.INSTANCE. sharePhoto
API リファレンス: SocialV4Interface.sharePhoto
APIリファレンス: HIVESocialV4 sharePhoto
コミュニティログインによるPCゲームへの自動ログイン¶
コミュニティウェブサイトの「PCでプレイ」ボタンをクリックすると、PCゲームがクロスプレイランチャーを通じて起動します。
この時、PCゲームはコミュニティの「ログイントークン値」を使用して自動的にログインします。
Warning
**PCゲームへのコミュニティログインによる自動ログイン**機能は、Hive SDK v4 24.0.0以上のWindowsバージョンでのみ動作します。
Steamの暗黙のログイン (Unity Windows)¶
Hive SDK v4 Unity Windows 24.2.0から、Steamの暗黙のログインがサポートされています。暗黙のログインを使用することを選択した場合は、AuthV4.Helper.signIn
を使用し、AuthV4.signIn(AUTO,...)
を使用することはできません。暗黙のログインであるため、アプリユーザーはゲームをインストールした後にSteamに一度だけログインします。Steamの暗黙のログインを使用する場合は、アプリ削除時にSDK設定データを保存するpropFolder
フォルダーを削除する実装を行う必要があります。