コンテンツにスキップ

アドオン

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

using hive;    

Boolean ageGateU13 = AuthV4.getAgeGateU13();
#include "HiveAuthV4.h"

bool bAgeGateU13 = FHiveAuthV4::GetAgeGateU13();

APIリファレンス: AuthV4 ::getAgeGateU13

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    

bool ageGateU13 = AuthV4::getAgeGateU13();

APIリファレンス: AuthV4.getAgeGateU13

import com.hive.AuthV4    

val ageGateU13 = AuthV4.getAgeGateU13()

APIリファレンス: AuthV4.INSTANCE.getAgeGateU13

import com.hive.AuthV4;    

boolean ageGateU13 = AuthV4.INSTANCE.getAgeGateU13();

API リファレンス: AuthV4Interface.getAgeGateU13

import HIVEService    

Bool ageGateU13 = AuthV4Interface.getAgeGateU13()

APIリファレンス: HIVEAuthV4 getAgeGateU13

#import <HIVEService/HIVEService-Swift.h>    

BOOL ageGateU13 = [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() メソッドを利用できます。

using hive;

Boolean ageGateU16Agree = Configuration.getAgeGateU16Agree();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;

bool ageGateU16Agree = Configuration::getAgeGateU16Agree();
import com.hive.Configuration

val ageGateU16Agree = Configuration.ageGateU16Agree()
import com.hive.Configuration;

boolean ageGateU16Agree = Configuration.INSTANCE.getAgeGateU16Agree();
import HIVEService

var ageGateU16Agree: Bool = ConfigurationInterface.getAgeGateU16Agree()
#import <HIVEService/HIVEService-Swift.h>

BOOL ageGateU16 = [HIVEConfiguration getAgeGateU16Agree];

Hive SDK v4 24.3.0 から、アプリが法定代理人の同意確認条項を使用している場合、Configuration.getLegalGuardianConsentAgree() メソッドを呼び出すことで、アプリユーザーが法定代理人の同意を得たかどうかを取得できます。値が true の場合、同意が与えられたことを示します。

using hive;    

Boolean legalGuardianConsentAgree = Configuration.getLegalGuardianConsentAgree();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;    

bool ageGateU16Agree = Configuration::getLegalGuardianConsentAgree();
import com.hive.Configuration    

val legalGuardianConsentAgree = Configuration.legalGuardianConsentAgree()
import com.hive.Configuration;    

boolean legalGuardianConsentAgree = Configuration.INSTANCE.getLegalGuardianConsentAgree();
import HIVEService    

var legalGuardianConsentAgree: Bool = ConfigurationInterface.getLegalGuardianConsentAgree()
#import <HIVEService/HIVEService-Swift.h>    

BOOL legalGuardianConsentAgree = [HIVEConfiguration getLegalGuardianConsentAgree];

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

using hive;    

    AuthV4.showDeviceManagement((ResultAPI result) => {    
         if (result.isSuccess()) {    
             // デバイス管理UIを表示した後に閉じる    
         }    
}
#include "HiveAuthV4.h"

FHiveAuthV4::ShowDeviceManagement(FHiveAuthV4OnShowDeviceManagementDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // デバイス管理UIを公開した後に閉じました
        }
}));

APIリファレンス: AuthV4 ::showDeviceManagement

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    

    AuthV4::showDeviceManagement([=](ResultAPI const & result) {    
         if (result.isSuccess()) {    
             // デバイス管理UIを表示した後に閉じる    
         }    
});

APIリファレンス: AuthV4.showDeviceManagement

import com.hive.AuthV4    
    import com.hive.ResultAPI    

    AuthV4.showDeviceManagement(object : AuthV4.AuthV4ShowDeviceManagementListener {    
         override fun onAuthV4ShowDeviceManagement(result: ResultAPI) {    
             if (result.isSuccess) {    
                 // デバイス管理UIを表示した後に閉じました    
             }    
         }    
})

APIリファレンス: AuthV4.INSTANCE .showDeviceManagement

import com.hive.AuthV4;    
    import com.hive.ResultAPI;    

    AuthV4.INSTANCE.showDeviceManagement(result -> {    
         if (result.isSuccess()) {    
             // デバイス管理UIを表示した後に閉じる    
         }    
});

APIリファレンス: AuthV4Interface .showDeviceManagement

import HIVEService    

    AuthV4Interface.showDeviceManagement() { result in    
         if result.isSuccess() {    
             // デバイス管理UIを公開した後に閉じる    
         }    
}

APIリファレンス: HIVEAuthV4 showDeviceManagement

#import <HIVEService/HIVEService-Swift.h>    

    [HIVEAuthV4 showDeviceManagement: ^(HIVEResultAPI *result) {    
         if ([result isSuccess]) {    
             // デバイス管理UIを表示した後に閉じました    
         }    
}];

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

// Google Play GamesからplayerIDをリクエストします。
ProviderGoogle.getGooglePlyaerId((ResultAPI result, String googlePlayerId, String authCode)=>{
    if(result.isSuccess()){
        // API呼び出しに成功しました。
    }
});

APIリファレンス: ProviderGoogle::getGooglePlayerId

// Google Play GamesからplayerIDをリクエストします。
ProviderGoogle::getGooglePlayerId([=](ResultAPI const &result, std::string const &googlePlayerId, std::string const &authCode) {
    if (result.isSuccess())
    {
        // API呼び出しに成功しました。
    }
});
#include "HiveProviderGoogle.h"

FHiveProviderGoogle::GetGooglePlayerId(FHiveProviderGoogleOnGooglePlayerIdDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FString& GooglePlayerId, const FString& AuthCode) {
        if (Result.IsSuccess()) {
                // API呼び出しに成功しました。
        }
}));

APIリファレンス: com.hive.ProviderGoogle.getGooglePlayerId

// Google Play GamesからplayerIDをリクエストします。
ProviderGoogle.getGooglePlayerId(new ProviderGoogle.GooglePlayerIdListener() {
    @Override
    public void onPlayerIdResult(ResultAPI resultAPI, String googlePlayerId, String authCode) {
        if(resultAPI.isSuccess()){
            // API呼び出しに成功しました。
        }
    }
});

達成

ProviderGoogleクラスを実装して、Hive SDKを通じてGoogle Play GamesのAchievement機能を使用します。

隠された実績を明らかにするリクエスト

現在サインインしているプレイヤーに隠された実績を表示するには、achievementsReveal()メソッドを呼び出します。これは効果はありませんが、0%の実績を明らかにします。 以下はサンプルコードです。

APIリファレンス: hive.ProviderGoogle.achievementsReveal

using hive;    
    //Achievement ID    
    String achievementId = "abcdef123456";    
    ProviderGoogle.achievementsReveal(achievementId, (ResultAPI result) => {    
      if (result.isSuccess()) {    
      // call successful    
      }    
});
#include "HiveProviderGoogle.h"

// 実績ID 
FString AchievementId = TEXT("abcdef123456");
FHiveProviderGoogle::AchievementsReveal(AchievementId, FHiveProviderGoogleOnAchievementsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // APIコール成功 
        }
}));

APIリファレンス: ProviderGoogle::achievementsReveal

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    //Achievement ID    
    string achievementId = "abcdef123456";    
    ProviderGoogle::achievementsReveal(achievementId, [=](ResultAPI const & result) {    
       if(result.isSuccess()){    
          // call successful    
        }    
});

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

import com.hive.ProviderGoogle;    
    import com.hive.ResultAPI;    

    //達成 ID    
    String achievementId = "abcdef123456";    

    ProviderGoogle.INSTANCE.achievementsReveal(achievementId, resultAPI -> {    
         if (resultAPI.isSuccess()) {    
             // call successful    
         }    
});

実績を解除するリクエスト

現在サインインしているプレイヤーに実績を解除するには、achievementsUnlock()メソッドを呼び出します。このメソッドは、実績のステータスに関係なく、100%の実績をマークします。隠れているかどうかに関わらず。 以下はサンプルコードです。

API リファレンス: ProviderGoogle.achievementsUnlock

using hive;    
    //Achievement ID    
    String achievementId = "abcdef123456";    
    ProviderGoogle.achievementsUnlock(achievementId, (ResultAPI result) => {    
    if (result.isSuccess()) {    
    // call successful    
    }    
});

APIリファレンス: ProviderGoogle::achievementsUnlock

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    //Achievement ID    
    string achievementId = "abcdef123456";    
    ProviderGoogle::achievementsUnlock(achievementId, [=](ResultAPI const & result) {    
    if(result.isSuccess()){    
           // call successful    
        }    
});

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

import com.hive.ProviderGoogle;    
    import com.hive.ResultAPI;    

    //アチーブメントID    
    String achievementId = "abcdef123456";    

    ProviderGoogle.INSTANCE.achievementsUnlock(achievementId, resultAPI -> {    
         if (resultAPI.isSuccess()) {    
             // call successful    
         }    
});

実績を増やすリクエスト

リクエスト関数を使用して成果を増加させるには、成果値をパラメータとして設定し、その後achievementsIncrement()メソッドを呼び出します。成果値は、対応するAPIが呼び出されたときに設定された値の合計であり、合計が最大になると自動的に成果が達成されます。

以下はサンプルコードです。

APIリファレンス: hive.ProviderGoogle.achievementsIncrement

using hive;    
    //Achievement ID    
    String achievementId = "abcdef123456";    
    // Achievement numbers    
    int value = 1;    
    ProviderGoogle.achievementsIncrement(achievementId, value, (ResultAPI result) => {    
      if (result.isSuccess()){    
      // call successful    
      }    
});
#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) {    
                 // 成功した呼び出し    
             }    
         }    
})

APIリファレンス: ProviderGoogle .INSTANCE.achievementsIncrement

import com.hive.ProviderGoogle;    
    import com.hive.ResultAPI;    

    //達成 ID    
    String achievementId = "abcdef123456";    

    // Achievement numbers    
    int value = 1;    

    ProviderGoogle.INSTANCE.achievementsIncrement(achievementId, value, resultAPI -> {    
         if (resultAPI.isSuccess()) {    
             // call successful    
         }    
});

実績リストを表示するリクエスト (ヘルパー)

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

using hive    

    // リーダーボードID    
    String leaderboardId = "12345abcde";    

    // リーダーボードスコア番号    
    long score = 100;    
    ProviderGoogle.leaderboardsSubmitScore(leaderboardId, score, (ResultAPI result) => {    
      if (result.isSuccess()) {    
      // API呼び出し成功    
      }    
});
#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

import com.hive.ProviderGoogle;    
    import com.hive.ResultAPI;    

    // リーダーボードID    
    String leaderboardId = "12345abcde";    

    // リーダーボードのスコア番号    
    long score = 100;    

    ProviderGoogle.INSTANCE.leaderboardsSubmitScore(leaderboardId, score, resultAPI -> {    
         if (resultAPI.isSuccess()) {    
             // API call successful    
         }    
});

リーダーボードリストを表示するリクエスト (ヘルパー)

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);
#include "HiveProviderApple.h"

FHiveProviderApple::LoadAchievements(FHiveProviderAppleOnLoadAchievements::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveProviderAppleAchievement>& Achievements) {
        if (Result.IsSuccess())
        {
                // API呼び出し成功
        }
}));

APIリファレンス: ProviderApple::loadAchievements

// Provider Appleに対して成果リストをリクエスト
ProviderApple::loadAchievements([=](ResultAPI const & result,std::vector<ProviderAppleAchievement>; const & achievements) {
    // 結果コールバック
    cout<<"ProviderApple::loadAchievements() コールバック"<<endl<<result.toString()<<endl;


    if (result.isSuccess() != true)
        return;

});

APIリファレンス: HIVEProviderApple::showAchievements:

// アチーブメントリストをプロバイダーAppleにリクエスト
[HIVEProviderApple loadAchievements:^(HIVEResultAPI *result, NSArray<HIVEProviderAppleAchievement *>; *achievements) {


    Loggerd(@"HIVEProviderApple.loadAchievements:\nresult = %@\nachievements = %@", result, achievements);

    if (result.isSuccess) {

    }
    else {

    }

    }];

実績報告のリクエスト

成果を報告するには、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

// 現在ログイン中の Hive アカウントが GameCenter に接続されていない場合    
    // 自動的に GameCenter への接続を試みます    

    import HIVEService    

    AuthV4Interface.helper().showAchievements() { result, playerInfo in    
         switch result.getCode() {    
             case .success:    
                 // 成功を達成し、成果を示す    
             case .authV4ConflitPlayer:    
                 // アカウントの競合    
             default:    
                 break    
         }    
}

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

using hive;    

    ProviderApple.showAchievements((ResultAPI result) {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});
#include "HiveProviderApple.h"

FHiveProviderApple::ShowAchievements(FHiveProviderAppleOnShowAchievement::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // call successful
        }
}));

APIリファレンス: ProviderApple::showAchievements

#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;

ProviderApple::showAchievements([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // call successful
    }
});

APIリファレンス: ProviderApple.showAchievements

import HIVEService    

    ProviderApple.showAchievements() { result in    
         if result.isSuccess() {    
             // call successful    
         }    
}

APIリファレンス: HIVEProviderApple showAchievements

#import <HIVEService/HIVEService-Swift.h>    

    [HIVEProviderApple showAchievements: ^(HIVEResultAPI *result) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

実績のリセットのリクエスト

成果をリセットするには、resetAchievements()メソッドを実装してください。

以下はサンプルコードです。

APIリファレンス: hive.ProviderApple.resetAchievements

using hive;

ProviderApple.resetAchievements((ResultAPI result) => {
    if (result.isSuccess()) {
        // call successful
    }
});
#include "HiveProviderApple.h"

FHiveProviderApple::ResetAchievements(FHiveProviderAppleOnResetAchievement::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // API call successful
        }
}));

APIリファレンス: ProviderApple ::resetAchievements

#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;

ProviderApple::resetAchievements([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // call successful
    }
});

API リファレンス: resetAchievements(_:)

import HIVEService

ProviderApple.resetAchievements() { result in
    if result.isSuccess() {
        // call successful
    }
}

API リファレンス: HIVEProviderApple showAchievements<

#import <HIVEService/HIVEService-Swift.h>    

    [HIVEProviderApple resetAchievements: ^(HIVEResultAPI *result) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

リーダーボード

**ProviderApple**クラスを実装して、Hive SDKを通じてApple Game Centerの**Leaderboard**機能を使用します。

リーダーボードスコアの報告依頼

Apple Game Centerにリーダーボードスコアを報告するには、reportScore()メソッドを呼び出します。
以下はサンプルコードです。

API リファレンス: hive .ProviderApple.reportScore

using hive;    

    String playerScore = "1234";    
    String leaderBoardId = "com.hivesdk.leaderboard.10hit";    

    ProviderApple.reportScore(playerScore, leaderBoardId, (ResultAPI result) => {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});
#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    

    let playerScore = "1234"    
    let leaderBoardId = "com.hivesdk.leaderboard.10hit"    

    ProviderApple.reportScore(playScore, leaderboardIdentifier: leaderboardId) { result in    
         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

// 現在ログインしている Hive アカウントが GameCenter に接続されていない場合    
    // 自動的に GameCenter に接続しようとします    

    import HIVEService    

    AuthV4Interface.helper().showLeaderboard() { result, playerInfo in    
         switch result.getCode() {    
             case .success:    
                 // 成功を届けてリーダーボードを表示    
             case .authV4ConflictPlayer:    
                 // アカウントの競合    
             default:    
                 break    
         }    
}

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

using hive;    

    ProviderApple.showLeaderboard((ResultAPI result) => {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});
#include "HiveProviderApple.h"

FHiveProviderApple::ShowLeaderboard(FHiveProviderAppleOnShowLeaderboard::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // API call successful
        }
}));

APIリファレンス: ProviderApple ::showLeaderboard

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    

    ProviderApple::showLeaderboard([=](ResultAPI const & result) {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API リファレンス: showLeaderboard(_:)

import HIVEService    

    ProviderApple.showLeaderboard() { result in    
         if result.isSuccess() {    
             // call successful    
         }    
}

APIリファレンス: HIVEProviderApple ::showLeaderboard:

#import <HIVEService/HIVEService-Swift.h>    

    [HIVEProviderApple showLeaderboard: ^(HIVEResultAPI *result) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

ソーシャルメディアに写真を投稿する

ユーザーは、ゲームを通じてデバイスのギャラリーから写真をインポートすることで、Facebookに写真を共有および投稿できます。以下はサンプルコードです:

API リファレンス: SocialV4. sharePhoto

using hive;    

    SocialV4.ProviderType providerType = SocialV4.ProviderType.FACEBOOK;    

    SocialV4.sharePhoto(providerType, (ResultAPI result) => {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});
#include "HiveSocialV4.h"

ESocialV4ProviderType ProviderType = ESocialV4ProviderType::FACEBOOK;
FHiveSocialV4::SharePhoto(ProviderType, FHiveSocialV4OnSharePhotoDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
            if (Result.IsSuccess()) {
                // API call successful
        } 
}));

APIリファレンス: SocialV4::sharePhoto

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    

    SocialV4::ProviderType providerType = SocialV4::ProviderType::FACEBOOK;    

    SocialV4::sharePhoto(providerType, [=](ResultAPI const & result) {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API リファレンス: SocialV4.sharePhoto

import com.hive.SocialV4    
    import com.hive.ResultAPI    

    val providerType = SocialV4.ProviderType.FACEBOOK    

    SocialV4.sharePhoto(providerType, object : SocialV4.SocialV4SharePhotoListener {    
         override fun onShare(result: ResultAPI) {    
             if (result.isSuccess) {    
                 // call successful    
             }    
         }    
})

APIリファレンス: SocialV4.INSTANCE. sharePhoto

import com.hive.SocialV4;    
    import com.hive.ResultAPI;    

    SocialV4.ProviderType providerType = SocialV4.ProviderType.FACEBOOK;    

    SocialV4.INSTANCE.sharePhoto(providerType, result -> {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API リファレンス: SocialV4Interface.sharePhoto

import HIVEService    

    let providerType: SocialProviderType = .Facebook    

    SocialV4Interface.sharePhoto(providerType) { result in    
         if result.isSuccess() {    
             // 成功した場合の呼び出し    
         }    
}

APIリファレンス: HIVESocialV4 sharePhoto

#import <HIVEService/HIVEService-Swift.h>    

    HIVESocialProviderType providerType = HIVESocialProviderTypeFacebook;    

    [HIVESocialV4 sharePhoto: providerType handler: ^(HIVEResultAPI *result) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

コミュニティログインによる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フォルダーを削除する実装を行う必要があります。