ユーザーデータの確認
ユーザーがサインインした後、ユーザーのプロフィールと停止状態を確認できます。
ユーザープロフィールの取得¶
ユーザーがサインインすると、**AuthV4**クラスのgetProfile()メソッドを呼び出すことでユーザープロフィールデータを取得できます。プロフィールデータには、表示名用のplayerId、playerName、およびユーザーサムネイル画像用のplayerImageUrlが含まれています。
以下はプロフィールデータを受信するためのサンプルコードです。
APIリファレンス: hive.AuthV4.getProfile
hiveを使用しています;
List<Int64> playerIdList = new List();
playerIdList.Add(0123);
playerIdList.Add(4567);
AuthV4.getProfile(playerIdList, (ResultAPI result, List profileInfoList) => {
    if (!result.isSuccess()) {
return;
    }
    if (profileInfoList != null) {
        foreach (ProfileInfo profileInfo in profileInfoList) {
        // PlayerName: profileInfo.playerName
        // PlayerId: profileInfo.playerId
        }
    }
});
#include "HiveAuthV4.h"
TArray<int64> PlayerIdArray;
PlayerIdArray.Add(1234);
PlayerIdArray.Add(5678);
FHiveAuthV4::GetProfile(PlayerIdArray, FHiveAuthV4OnGetProfileDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveProfileInfo> ProfileInfoArray) {
        if (!Result.IsSuccess()) {
                return;
        }
        for (const auto& ProfileInfo : ProfileInfoArray)
        {
                // PlayerName: ProfileInfo.PlayerName;
                // PlayerId : ProfileInfo.ProfileInfo;
        }
}));
API リファレンス: AuthV4::getProfile
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
vector<PlayerID> playerIdList;
playerIdList.push_back(0123);
playerIdList.push_back(4567);
AuthV4::getProfile(playerIdList, [=](ResultAPI const & result, vector<ProfileInfo> const & profileInfoList) {
    if (!result.isSuccess()) {
return;
}
if (profileInfoList != null) {
    for (auto profileInfo : profileInfoList) {
        // PlayerName: profileInfo.playerName
        // PlayerId: profileInfo.playerId
        }
    }
});
APIリファレンス: AuthV4.getProfile
import com.hive.AuthV4
import com.hive.ResultAPI
val playerIdList = arrayListOf<Long>(
    1234,
    4567
)
AuthV4.getProfile(playerIdList, object : AuthV4.AuthV4GetProfileListener {
    override fun onAuthV4GetProfile(result: ResultAPI, profileInfoList: ArrayList<AuthV4.ProfileInfo>?) {
        if (!result.isSuccess) {
            return
        }
        if (profileInfoList != null) {
            for (i in 0 until profileInfoList.size) {
                // PlayerName: profileInfoList[i].playerName
                // PlayerId: profileInfoList[i].playerId
            }
        }
    }
})
APIリファレンス: com.hive.AuthV4.getProfile
import com.hive.AuthV4;
import com.hive.ResultAPI;
ArrayList<Long> playerIdList = new ArrayList<>(Arrays.asList(
        1234L,
        5678L
));
AuthV4.INSTANCE.getProfile(playerIdList, (result, profileInfoList) -> {
    if (!result.isSuccess()) {
        return;
    }
    if (profileInfoList != null) {
        for (AuthV4.ProfileInfo profileInfo : profileInfoList) {
            // PlayerName: profileInfo.getPlayerName();
            // PlayerId: profileInfo.getPlayerId();
        }
    }
});
API リファレンス: AuthV4Interface.getProfile
import HIVEService
var playerIdList = [Int64]()
playerIdList.append(0123)
playerIdList.append(4567)
AuthV4Interface.getProfile(playerIdList) { result, profileInfoList in
    if !result.isSuccess() {
    return
    }
    if let profileInfoList = profileInfoList {
        for (profileInfo in profileInfoList) {
        // PlayerName: profileInfo.playerName
        // PlayerId: profileInfo.playerId
        }
    }
}
API Reference: HIVEAuthV4:getProfile
#import <HIVEService/HIVEService-Swift.h>
NSMutableArray<NSNumber *> *playerIdList = [[[NSMutableArray] alloc] init];
[playerIdList addObject: [NSNumber numberWithLongLong:0123]];
[playerIdList addObject: [NSNUmber numberWithLongLong:4567]];
[HIVEAuthV4 getProfile: playerIdList handler: ^(HIVEResultAPI *result, NSArray<HIVEProfileInfo *> *profileInfoList) {
    if (![result isSuccess]) {
    return;
    }
    if (profileInfoList != nil) {
        for (HIVEProfileInfo *profileInfo in profileInfoList) {
        // PlayerName: profileInfo.playerName
        // PlayerId: profileInfo.playerId
        }
    }
}];
ブラックリストの確認¶
ユーザーがサインインするか、IdPと同期すると、Hive SDKは自動的にブラックリストをチェックし、ユーザーをゲームプレイから一時停止します。ゲーム中にユーザーの一時停止状態を確認する必要がある場合は、checkBlacklist()メソッドを使用して、リアルタイムでユーザーの一時停止状態を確認し、ゲームプレイを制限してください。checkBlacklist()呼び出し時のisShowパラメータの値に応じて、Hive SDKは一時停止状態のポップアップを直接表示するか、一時停止状態のポップアップをカスタマイズするためのポップアップコンテンツを返します。
- 提供されたサスペンションポップアップの使用: isShowパラメータをtrueに設定します。
-  カスタマイズされたサスペンションポップアップの使用: isShowパラメータをfalseに設定します。ポップアップデータに関する詳細は、以下のsuspension popup Data Returned by Hive SDKを参照してください。
-  サスペンションポップアップの例画面 
Hive SDKによって返されたサスペンションポップアップデータ¶
checkBlacklist()メソッドの呼び出しが成功した場合、Hive SDKはAuthV4MaintenanceInfoオブジェクトを通じて以下の表の値を返します。
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| title | ポップアップのタイトル | 文字列 | 
| message | ポップアップの内容 | 文字列 | 
| button | ポップアップボタンのラベルに表示されるテキスト | 文字列 | 
| action | ユーザーがポップアップボタンをタップしたときのアクションタイプ * OPEN_URL: 外部ブラウザによって渡されたURLを実行する * EXIT: アプリを終了する * DONE: メンテナンスポップアップを閉じるだけ | AuthV4MaintenanceActionTypeの列挙型 | 
| url | 外部ブラウザによって表示されるURL。これは actionフィールドの値がOPEN_URLのときに有効です | 文字列 | 
| remainingTime | メンテナンス完了までの残り時間(単位:秒)。時間はリアルタイムで更新され、ゼロになるとアプリが終了します。 | 整数 | 
以下は、停止中のユーザーを確認するためのサンプルコードです。
- Hive SDK UIを使用しない場合(isShow = false)
API リファレンス: hive.AuthV4.checkBlacklist
#include "HiveAuthV4.h"
bool bIsShow = false;
FHiveAuthV4::CheckBlacklist(bIsShow,
                                                            FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
        if (!Result.IsSuccess()) {
                // サスペンションの確認リクエストが失敗しました
                return;
        }
        if (AuthV4MaintenanceInfoArray.Num() > 0) {
                //  サスペンドされたユーザーの場合
        } else {
                // 一般ユーザーの場合
        }
}));
APIリファレンス: AuthV4.checkBlacklist
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
bool isShow = false;
AuthV4::checkBlacklist(isShow, [=](ResultAPI const & result, vector<AuthV4MaintenanceInfo> const & maintenanceInfo) {
    if(!result.isSuccess) {
        // サスペンションの確認リクエストが失敗しました
        return;
    }
    if (maintenanceInfo != null){
        // 一時停止中のユーザーの場合
    } else {
        // 一般ユーザーの場合
    }
});
APIリファレンス: AuthV4.checkBlacklist
    import com.hive.AuthV4
    import com.hive.ResultAPI
    val isShow = false
    AuthV4.checkBlacklist(isShow, object : AuthV4.AuthV4MaintenanceListener {
        override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {
            if (!result.isSuccess) {
                // 停止確認のリクエストに失敗しました
                return
            }
            if (maintenanceInfo != null) {
                // サスペンドされたユーザーの場合
            } else {
                // 一般ユーザーの場合
            }
        }
    })
APIリファレンス: com.hive.AuthV4.checkBlacklist
API リファレンス: AuthV4Interface.checkBlacklist
APIリファレンス: HIVEAuthV4:checkBlacklist
    #import <HIVEService/HIVEService-Swift.h>
    BOOL isShow = NO;
    [HIVEAuthV4 checkBlackList: isShow handler: ^(HIVEResultAPI *result, HIVEAuthV4MaintenanceInfo *maintenanceInfo) {
        if (![result isSuccess]) {
        // サスペンションの確認リクエストに失敗しました
        return;
        }
        if (maintenanceInfo != nil) {
        // サスペンドされたユーザーの場合
        } else {
        // 一般ユーザーの場合
        }
    }];
- Hive SDK UI (isShow = true) を使用する場合
API リファレンス: hive.AuthV4.checkBlacklist
// If isShow is true, Hive SDK displays suspension popup.
    Boolean isShow = true;
    // Hive SDK AuthV4 リクエストは、ユーザーが停止されているかどうかを確認します。
    AuthV4.checkBlacklist(isShow, (ResultAPI result, List<AuthV4.MaintenanceInfo> maintenanceInfo)=>{
    if (result.isSuccess()) {
        // 通常のユーザーの場合
    }    else if (result.needExit()) {
    // TODO: アプリの終了を実装する。
     // 例) Application.Quit();    }});
#include "HiveAuthV4.h"
// isShowがtrueの場合、Hive SDKはサスペンションポップアップを表示します。
bool bIsShow = true;
// Hive SDK AuthV4 リクエストは、ユーザーが停止されているかどうかを確認します。
FHiveAuthV4::CheckBlacklist(bIsShow,
                                                            FHiveAuthV4OnMaintenanceInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveAuthV4MaintenanceInfo>& AuthV4MaintenanceInfoArray) {
        if (Result.IsSuccess()) {
                // 通常のユーザーの場合
        } else if (Result.NeedExit() {
                // TODO: アプリの終了を実装します。
                // 例) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
        }
}));
APIリファレンス: AuthV4.checkBlacklist
// isShowがtrueの場合、Hive SDKはサスペンションポップアップを表示します。
    bool isShow = true;
    // Hive SDK AuthV4 リクエストは、ユーザーが停止されているかどうかを確認します。
    AuthV4::checkBlacklist(isShow,  [=](ResultAPI const & result,std::vector<AuthV4MaintenanceInfo> const & maintenanceInfolist){
    if (result.isSuccess()) {
        // 通常のユーザーの場合
    }    else if (result.needExit()) {
        // TODO: アプリの終了を実装します。
        // Cocos2d-x エンジンのユーザー
        // ex) exit(0);
        // Unreal エンジンのユーザー
        // 例) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);    }});
APIリファレンス: AuthV4.checkBlacklist
// isShowがtrueの場合、Hive SDKはサスペンションポップアップを表示します。
    val isShow = true
 // Hive SDK AuthV4 リクエストは、ユーザーが停止されているかどうかを確認します。
AuthV4.checkBlacklist(isShow, object : AuthV4.AuthV4MaintenanceListener {
 override fun onAuthV4Maintenance(
result: ResultAPI,
maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?    ) {        if (result.isSuccess) {
    // 通常のユーザーの場合
} else if (result.needExit()) {
    // TODO: アプリの終了を実装します。
    // 例) exitProcess(0)        }    }})
APIリファレンス: com.hive.AuthV4.checkBlacklist
// If isShow is true, Hive SDK displays suspension popup.
boolean isShow = true;
// Hive SDK AuthV4 リクエストは、ユーザーが一時停止されているかどうかを確認します。
AuthV4.checkBlacklist(isShow, new AuthV4.AuthV4MaintenanceListener() {
@Override
public void onAuthV4Maintenance(ResultAPI result, ArrayList<AuthV4.AuthV4MaintenanceInfo> maintenanceInfo) {
    if (result.isSuccess()) {
        // 通常のユーザーの場合
    }        else if (result.needExit()) {
        // TODO: アプリの終了を実装します。
        // 例) System.exit(0);        }    }});
API リファレンス: AuthV4Interface.checkBlacklist
// If isShow is true, Hive SDK displays suspension popup.
    let isShow = true
// Hive SDK AuthV4 リクエストは、ユーザーが停止されているかどうかを確認します。
AuthV4Interface.checkBlacklist(isShow) { (result, maintenanceInfolist) in
if result.isSuccess() {
    // 通常のユーザーの場合
}
else if result.needExit() {
    // TODO: アプリの終了を実装します。
    // 例) exit(0) 
}
APIリファレンス: HIVEAuthV4:checkBlacklist
// If isShow is YES, Hive SDK displays suspension popup.
    BOOL isShow = YES;
// Hive SDK AuthV4 リクエストは、ユーザーが一時停止されているかどうかを確認します。
[HIVEAuthV4 checkBlacklist:isShow handler:^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {
if (result.isSuccess) {
    // 通常のユーザーの場合
}    else if (result.needExit) {
    // TODO: アプリの終了を実装します。
    // 例) exit(0);             }}];
ユーザーのメールアドレスを使用する¶
ゲーム会社は、ログインしたユーザープロフィール情報にメール情報を収集する機能を提供しています。メール情報を収集するには、Hive コンソールで機能を有効にする必要があります。
まず、以下のIDPリストから「メールを収集できるIDP」からメールを収集するための許可を取得する必要があります。
- メール収集に利用可能なIdP: Google、Facebook、Huawei (Android)、メンバーシップ、Apple (iOS)
- IdPから収集できないメール: Google Play Games、Apple Game Center、QQ、VK、WeChat、Line、Weverse, Steam, X
<
明示的ログインAPIを呼び出した後、コールバックで返されるPlayerInfoクラスのインスタンス内のproviderInfoDataを参照することで、ログインしているユーザーのメールアドレスを取得できます。
providerInfoDataのキーとしてProviderTypeを使用して、ProviderInfoを取得します。詳細については、以下の例コードを参照してください。
APIリファレンス: hive.AuthV4.showSignIn
// Request Hive SDK AuthV4 Authentication UI
AuthV4.showSignIn((ResultAPI result, AuthV4.PlayerInfo playerInfo)=>{
if (result.isSuccess()) {
    // 認証成功
    // playerInfo: 認証されたユーザー情報
    // メール情報を取得する例
    foreach (KeyValuePair<AuthV4.ProviderType , AuthV4.ProviderInfo> entry in playerInfo.providerInfoData) {
        AuthV4.ProviderInfo providerInfo = entry.Value;
        if(providerInfo.providerEmail != null && providerInfo.providerEmail != "") {
            string email = providerInfo.providerEmail;
            break;
         }        
        }    
    }    
    else if (result.needExit()) {
        // TODO: アプリの終了を実装する
        // 例) Application.Quit();    
    }
});
#include "HiveAuthV4.h"
// リクエスト Hive SDK AuthV4 認証 UI
FHiveAuthV4::ShowSignIn(FHiveAuthV4OnSignInDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHivePlayerInfo& PlayerInfo) {
        if (Result.IsSuccess()) {
                // 認証成功
      // playerInfo: 認証されたユーザー情報
                // メール情報を取得する例
                for (const auto& ProviderInfoEntry : PlayerInfo.ProviderInfoData) {
                        FHiveProviderInfo ProviderInfo = ProviderInfoEntry.Value;
                        FString Email = ProviderInfo.ProviderEmail;
                }
        } else if (Result.NeedExit()) {
                 // TODO: アプリの終了を実装する
      // Cocos2d-xエンジンのユーザー
      // ex) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
        }
}));
APIリファレンス: AuthV4::showSignIn
// リクエスト Hive SDK AuthV4 認証 UI
AuthV4::showSignIn([=](ResultAPI const & result, PlayerInfo const & playerInfo) {
    if (result.isSuccess()) {
        // 認証成功
        // playerInfo: 認証されたユーザー情報
        // メール情報を取得する例
        for(auto it = playerInfo.providerInfoData.begin(); it != playerInfo.providerInfoData.end(); ++it) {
            hive::ProviderInfo providerInfo = it->second;
            if(!providerInfo.providerEmail.empty()) {
                std::string email = providerInfo.providerEmail;
                break;
            }
        }
    }
    else if (result.needExit()) {
        // TODO: アプリの終了を実装する
        // Cocos2d-xエンジンのユーザー
        // 例) exit(0);
        // Unrealエンジンのユーザー
        // 例) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
    }
});
APIリファレンス: com.hive.AuthV4.showSignIn
// リクエスト Hive SDK AuthV4 認証 UI
AuthV4.showSignIn(object : AuthV4.AuthV4SignInListener{
override fun onAuthV4SignIn(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {
    if (result.isSuccess) {
        // 認証成功
        // playerInfo: 認証されたユーザー情報
        // メール情報を取得する例
        playerInfo?.let {
            for ((key, value) in it.providerInfoData) {
                var providerInfo: AuthV4.ProviderInfo = value
                if(providerInfo.providerEmail.isNotEmpty()) {
                    val email = providerInfo.providerEmail
                    break
                }
            }
        }
    } else if (result.needExit()) {
            // TODO: アプリの終了を実装する
            // 例) exitProcess(0)
        }
    }
})
APIリファレンス: com.hive.AuthV4.showSignIn
// リクエスト Hive SDK AuthV4 認証 UI
AuthV4.showSignIn(new AuthV4.AuthV4SignInListener() {
    @Override
    public void onAuthV4SignIn(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        if (result.isSuccess()) {
            // 認証成功
            // playerInfo: 認証されたユーザー情報
            // メール情報を取得する例
            if(playerInfo != null) {
                for (Map.Entry<AuthV4.ProviderType , AuthV4.ProviderInfo> entry : playerInfo.getProviderInfoData().entrySet()) {
                    AuthV4.ProviderInfo providerInfo = entry.getValue();
                    if (providerInfo.getProviderEmail() != "") {
                        String email = providerInfo.getProviderEmail();
                        break;
                    }                
                }            
            }        
        }        
        else if (result.needExit()) {
            // TODO: アプリの終了を実装する
            // 例) System.exit(0);        
        }    
    }
});
APIリファレンス: HIVEAuthV4:showSignIn
var email = String()
// リクエスト Hive SDK AuthV4 認証 UI
AuthV4Interface.showSignIn { (result, playerInfo) in
    if result.isSuccess() {
        // 認証成功
        // playerInfo: 認証されたユーザー情報
        // メール情報を取得する例
        if let playerInfo = playerInfo {
            // providerEmailが存在するproviderInfoを見つける(現在サインインしているプロバイダー)
            for key in playerInfo.providerInfoData.keys {
                if let providerInfo = playerInfo.providerInfoData[key],
                providerInfo.providerEmail.count > 0 {
                    // providerEmail != ""
                    email = providerInfo.providerEmail
                    break
                }
            }
        }
    } else if result.needExit() {
        // TODO: アプリの終了を実装する
        // 例) exit(0)
    }
} 
APIリファレンス: HIVEAuthV4:showSignIn
__block NSString* email = @"";
// リクエスト Hive SDK AuthV4 認証 UI
[HIVEAuthV4 showSignIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    if([result isSuccess]){
        // 認証成功
        // playerInfo: 認証されたユーザー情報
        // メール情報を取得する例
        if(playerInfo != nil) {
            // providerEmailが存在するproviderInfoを見つける(現在のサインインのプロバイダー)
            for (NSString* key in playerInfo.providerInfoData.allKeys) {
                HIVEProviderInfo* providerInfo = playerInfo.providerInfoData[key];
                if (providerInfo != nil && providerInfo.providerEmail.length > 0) {
                    // providerEmail != ""
                    email = providerInfo.providerEmail;
                    break;
                }
            }
        }
    } else if ([result needExit]) {
        // TODO: アプリの終了を実装する
        // 例) exit(0);
    }
}];
Note
ゲストログインとカスタムログインには、ProviderInfoにメール情報が含まれていません。これは空の文字列("")として返されます。
ユーザーのメール情報がない場合、ProviderInfoのメール情報は空の文字列("")として返されます。
