인증에서는 다음과 같은 부가기능을 제공합니다.
Facebook 친구 목록 가져오기
getProviderFriendsList()
는 해당 게임을 하는 Facebook 친구의 PlayerID를 제공합니다.
게임을 하지만 Facebook 연동 이력이 없는 친구는 목록에 나타나지 않으며 게임 연동 이력은 있지만 현재 Facebook이 연동되어 있지 않은 경우 PlayerID -1을 리턴합니다.
API Reference: hive.AuthV4.getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 } } }); |
API Reference: AuthV4::getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#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 Reference: com.hive.AuthV4.getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 Reference: com.hive.AuthV4.getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 Reference: AuthV4Interface.getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 Reference: HIVEAuthV4:getProviderFriendsList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#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(Children’s Online Privacy Protection Act)는 13세 미만 어린이의 개인 정보 보호를 목적으로 발효된 미국 법률입니다. Hive는 COPPA 규정에 대응하기 위해 Hive SDK v4.10.0부터 13세 미만 여부를 조회하는 getAgeGateU13()
메서드를 추가합니다. 사용자가 13세 미만일 경우 API가 반환하는 값은 true
입니다.
예제 코드
API Reference: AuthV4.getAgeGateU13
1 2 3 |
using hive; Boolean ageGateU13 = AuthV4.getAgeGateU13(); |
API Reference: AuthV4::getAgeGateU13
1 2 3 4 5 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; bool ageGateU13 = AuthV4::getAgeGateU13(); |
API Reference: AuthV4.getAgeGateU13
1 2 3 |
import com.hive.AuthV4 val ageGateU13 = AuthV4.getAgeGateU13() |
API Reference: AuthV4.INSTANCE.getAgeGateU13
1 2 3 |
import com.hive.AuthV4; boolean ageGateU13 = AuthV4.INSTANCE.getAgeGateU13(); |
API Reference: AuthV4Interface.getAgeGateU13
1 2 3 |
import HIVEService Bool ageGateU13 = AuthV4Interface.getAgeGateU13() |
API Reference: HIVEAuthV4 getAgeGateU13
1 2 3 |
#import <HIVEService/HIVEService-Swift.h> BOOL ageGateU13 = [HIVEAuthV4 getAgeGateU13]; |
동작 변경 사항
ageGateU13()
값이 true
일 때 달라지는 동작은 아래와 같습니다.
- iOS
AuthV4.setup()
과Auth.initialize()
호출 시 푸시 권한 동의 여부를 묻는 팝업이 노출되지 않습니다.- 푸시 API가 동작하지 않습니다.
- Android
- 종료 팝업 노출 시 더 많은 게임(More Games) 버튼을 표시하지 않습니다.
- 리모트 푸시가 수신되지 않으며, 푸시 API가 동작하지 않습니다.
GDPR 적용 국가에서 16세 미만 약관 동의 여부 확인
Hive SDK v4 24.2.0 부터 GDPR(유럽 일반 개인 정보 보호법, General Data Protection Regulation) 영향을 받는 국가에서 16세 미만 사용자가 약관에 동의했는지 여부를 Configuration.getAgeGateU16Agree()
메서드로 반환받을 수 있습니다. 값이 true
이면 16세 미만 사용자가 약관을 동의한 상태이며, false
이면 그 반대입니다. 서드 파티 라이브러리 사용 시 사용자 나이가 16세 미만인지 아닌지를 판단해 앱 기능을 제한하려는 경우 Configuration.getAgeGateU16Agree()
메서드를 이용할 수 있습니다.
1 2 3 |
using hive; Boolean ageGateU16Agree = Configuration.getAgeGateU16Agree(); |
1 2 3 4 5 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; bool ageGateU16Agree = Configuration::getAgeGateU16Agree(); |
1 2 3 |
import com.hive.Configuration val ageGateU16Agree = Configuration.ageGateU16Agree() |
1 2 3 |
import com.hive.Configuration; boolean ageGateU16Agree = Configuration.INSTANCE.getAgeGateU16Agree(); |
1 2 3 |
import HIVEService var ageGateU16Agree: Bool = ConfigurationInterface.getAgeGateU16Agree() |
1 2 3 |
#import <HIVEService/HIVEService-Swift.h> BOOL ageGateU16 = [HIVEConfiguration getAgeGateU16Agree]; |
법정대리인 동의 여부 확인
Hive SDK v4 24.3.0부터 앱이 법정대리인 동의 확인 약관을 사용하는 경우, 앱 사용자 법정대리인 동의를 받았는지 여부를 Configuration.getLegalGuardianConsentAgree()
메서드를 반환받을 수 있습니다. 값이 true
이면 동의한 상태입니다.
1 2 3 |
using hive; Boolean legalGuardianConsentAgree = Configuration.getLegalGuardianConsentAgree(); |
1 2 3 4 5 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; bool ageGateU16Agree = Configuration::getLegalGuardianConsentAgree(); |
1 2 3 |
import com.hive.Configuration val legalGuardianConsentAgree = Configuration.legalGuardianConsentAgree() |
1 2 3 |
import com.hive.Configuration; boolean legalGuardianConsentAgree = Configuration.INSTANCE.getLegalGuardianConsentAgree(); |
1 2 3 |
import HIVEService var legalGuardianConsentAgree: Bool = ConfigurationInterface.getLegalGuardianConsentAgree() |
1 2 3 |
#import <HIVEService/HIVEService-Swift.h> BOOL legalGuardianConsentAgree = [HIVEConfiguration getLegalGuardianConsentAgree]; |
OS 권한 다시 요청하기
AndroidManifest.xml 파일에는 게임에 필요 권한 목록이 정리되어 있습니다. 이 중 일부 권한을 해당 API의 String 리스트로 전달하여 사용해보세요. 유저가 특정 권한을 수락했거나 거절했는지 확인할 수 있습니다. 유저가 거절한 권한 중 Dangerous permission에 해당하는 권한이 있다면 OS 권한 동의 팝업으로 유저에게 다시 노출합니다. 그 외 항목은 디바이스 설정 상태에 따라 자동으로 수락 또는 거절 처리됩니다. 권한을 잘못 입력하거나 오타가 있을 경우 AndroidManifest.xml 파일에 선언하지 않은 권한으로 간주하여 거절 처리합니다.
이 기능은 Android 6.0 (API level 23) 이상 버전에서 동작합니다. Android API level이 23 미만이거나 iOS일 경우에는 미지원 ResultAPI를 전달합니다.
예제 코드
API Reference: PlatformHelper.requestUserPermissions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 only } if (result.code == ResultAPI.Code.PlatformHelperOSVersionNotSupported) { // Android OS version not supported. } if (granted != null && granted.Length > 0) { foreach (String name in granted) { // requests 중 수락한 권한 목록 } } if (denied != null && denied.Length > 0) { foreach (String name in denied) { // requests 중 거절한 권한 목록 } } }); |
API Reference: PlatformHelper::requestUserPermissions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 only } if (result.code == hive::ResultAPI::PlatformHelperOSVersionNotSupported) { // Android OS version not supported. } if (!granted.empty()) { for (string name : granted) { // requests 중 수락한 권한 목록 } } if (!denied.empty()) { for (string name : denied) { // requests 중 거절한 권한 목록 } } }); |
API Reference: PlatformHelper.requestUserPermissions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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()) { // requests 중 수락한 권한 목록 } if (denied.isNotEmpty()) { // requests 중 거절한 권한 목록 } } ResultAPI.Code.PlatformHelperOSVersionNotSupported -> { // Android OS version not supported. } else -> { // 기타 예외 상황 } } } }) |
API Reference: PlatformHelper.INSTANCE.requestUserPermissions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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()) { // requests 중 수락한 권한 목록 } if (!denied.isEmpty()) { // requests 중 거절한 권한 목록 } break; case PlatformHelperOSVersionNotSupported: // Android OS version not supported. break; default: // 기타 예외 상황 break; } }); |
기기 관리 서비스 이용하기
기기 관리 서비스는 Hive 콘솔에서의 설정에 따라 로그인 시 자동으로 동작합니다. 로그인 후 게임에서는 AuthV4 클래스의 showDeviceManagement()
메서드를 호출하여 유저에게 기기 관리 목록을 보여줍니다.
기기 관리 서비스를 사용하는 게임은 기기 인증 실패로 인해 로그인이 해제되면 Result API의 AuthV4NotRegisteredDevice
코드를 처리하여 자동으로 재로그인을 시도하거나 로그아웃해야 합니다. 기기 관리 서비스에 대한 자세한 내용은 운영가이드인 기기 관리 서비스 소개를 참고하세요.
API Reference: AuthV4.showDeviceManagement
1 2 3 4 5 6 7 |
using hive; AuthV4.showDeviceManagement((ResultAPI result) => { if (result.isSuccess()) { // 기기관리 UI 노출 후 닫힘 } } |
API Reference: AuthV4::showDeviceManagement
1 2 3 4 5 6 7 8 9 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; AuthV4::showDeviceManagement([=](ResultAPI const & result) { if (result.isSuccess()) { // 기기관리 UI 노출 후 닫힘 } }); |
API Reference: AuthV4.showDeviceManagement
1 2 3 4 5 6 7 8 9 10 |
import com.hive.AuthV4 import com.hive.ResultAPI AuthV4.showDeviceManagement(object : AuthV4.AuthV4ShowDeviceManagementListener { override fun onAuthV4ShowDeviceManagement(result: ResultAPI) { if (result.isSuccess) { // 기기관리 UI 노출 후 닫힘 } } }) |
API Reference: AuthV4.INSTANCE.showDeviceManagement
1 2 3 4 5 6 7 8 |
import com.hive.AuthV4; import com.hive.ResultAPI; AuthV4.INSTANCE.showDeviceManagement(result -> { if (result.isSuccess()) { // 기기관리 UI 노출 후 닫힘 } }); |
API Reference: AuthV4Interface.showDeviceManagement
1 2 3 4 5 6 7 |
import HIVEService AuthV4Interface.showDeviceManagement() { result in if result.isSuccess() { // 기기관리 UI 노출 후 닫힘 } } |
API Reference: HIVEAuthV4 showDeviceManagement
1 2 3 4 5 6 7 |
#import <HIVEService/HIVEService-Swift.h> [HIVEAuthV4 showDeviceManagement: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 기기관리 UI 노출 후 닫힘 } }]; |
Google Play 게임 업적 및 리더보드
Google 피처드 선정을 목적으로 개발한다면 Google Play 게임의 업적과 리더보드 기능을 적용해야 합니다.
만약 유저가 IdP 중 Google 계정으로 게임에 로그인하면 Play Games Services(PGS)에 자동 로그인되어 업적과 리더보드를 사용할 수 있습니다. 이후 유저가 PGS 설정 화면에서 로그아웃할 경우, 게임 내 로그아웃 버튼과 동일하게 동작해 게임에서 로그아웃됩니다. Google Play 게임의 기능에 대한 자세한 설명은 Google Play Games Services 가이드를 참고하세요.
PlayerID 전달
Google Play 게임에 PlayerID를 요청하려면 ProviderGoogle 클래스의 getGooglePlayerId()
메서드를 호출해야 합니다. 이 메서드를 호출하면 Google Play 게임의 PlayerID뿐 아니라 유효성을 검증하는 AuthCode도 함께 전달됩니다.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.getGooglePlayerId
1 2 3 4 5 6 |
// Google Play 게임의 플레이어 ID 요청 ProviderGoogle.getGooglePlyaerId((ResultAPI result, String googlePlayerId, String authCode)=>{ if(result.isSuccess()){ // API 호출 성공 } }); |
API Reference: ProviderGoogle::getGooglePlayerId
1 2 3 4 5 6 7 |
// Google Play 게임의 플레이어 ID 요청 ProviderGoogle::getGooglePlayerId([=](ResultAPI const &result, std::string const &googlePlayerId, std::string const &authCode) { if (result.isSuccess()) { // API 호출 성공 } }); |
API Reference: com.hive.ProviderGoogle.getGooglePlayerId
1 2 3 4 5 6 7 8 9 |
// Google Play 게임의 플레이어 ID 요청 ProviderGoogle.getGooglePlayerId(new ProviderGoogle.GooglePlayerIdListener() { @Override public void onPlayerIdResult(ResultAPI resultAPI, String googlePlayerId, String authCode) { if(resultAPI.isSuccess()){ // API 호출 성공 } } }); |
업적
Hive를 이용해 Google Play 게임의 업적(Achievement) 기능을 사용하기 위해서는 ProviderGoogle 클래스를 사용하면 됩니다.
Google Play 게임의 숨겨진 업적 공개
Google Play 게임의 숨겨진 업적 공개 기능을 사용하기 위해서는 achievementsReveal()
메서드를 호출하세요. achievementsReveal()
사용 시 업적이 0% 로 공개만 될 뿐 달성되지는 않습니다.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.achievementsReveal
1 2 3 4 5 6 7 8 9 10 |
using hive; // 업적 ID String achievementId = "abcdef123456"; ProviderGoogle.achievementsReveal(achievementId, (ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderGoogle::achievementsReveal
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; // 업적 ID string achievementId = "abcdef123456"; ProviderGoogle::achievementsReveal(achievementId, [=](ResultAPI const & result) { if(result.isSuccess()){ // 호출 성공 } }); |
API Reference: ProviderGoogle.achievementsReveal
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import com.hive.ProviderGoogle import com.hive.ResultAPI // 업적 ID val achievementId = "abcdef123456" ProviderGoogle.achievementsReveal(achievementId, object : ProviderGoogle.GoogleAchievementsListener { override fun onAchievementsResult(resultAPI: ResultAPI) { if (resultAPI.isSuccess) { // 호출 성공 } } }) |
API Reference: ProviderGoogle.INSTANCE.achievementsReveal
1 2 3 4 5 6 7 8 9 10 11 |
import com.hive.ProviderGoogle; import com.hive.ResultAPI; // 업적 ID String achievementId = "abcdef123456"; ProviderGoogle.INSTANCE.achievementsReveal(achievementId, resultAPI -> { if (resultAPI.isSuccess()) { // 호출 성공 } }); |
Google Play 게임의 업적 달성 완료 요청
Google Play 게임의 업적 달성 완료 요청 기능을 사용하기 위해서는 achievementsUnlock()
메서드를 호출하세요. achievementsUnlock()
사용 시 업적의 공개 여부와 상관없이 업적이 100%로 달성됩니다.
다음은 예제 코드입니다.
API Reference: ProviderGoogle.achievementsUnlock
1 2 3 4 5 6 7 8 9 10 |
using hive; // 업적 ID String achievementId = "abcdef123456"; ProviderGoogle.achievementsUnlock(achievementId, (ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderGoogle::achievementsUnlock
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; // 업적 ID string achievementId = "abcdef123456"; ProviderGoogle::achievementsUnlock(achievementId, [=](ResultAPI const & result) { if(result.isSuccess()){ // 호출 성공 } }); |
API Reference: ProviderGoogle.achievementsUnlock
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 Reference: ProviderGoogle.INSTANCE.achievementsUnlock
1 2 3 4 5 6 7 8 9 10 11 |
import com.hive.ProviderGoogle; import com.hive.ResultAPI; // 업적 ID String achievementId = "abcdef123456"; ProviderGoogle.INSTANCE.achievementsUnlock(achievementId, resultAPI -> { if (resultAPI.isSuccess()) { // 호출 성공 } }); |
Google Play 게임의 업적 수치 증가 요청
Google Play 게임의 업적 수치 증가 요청 기능을 사용하기 위해서는 업적 수치를 파라미터로 설정하여 achievementsIncrement()
메서드를 호출하세요. 업적 수치는 해당 API가 호출되었을 시 설정된 value 값의 합산이며 총 합산이 Max가 될 경우 자동으로 업적이 달성됩니다.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.achievementsIncrement
1 2 3 4 5 6 7 8 9 10 11 12 |
using hive; // 업적 ID String achievementId = "abcdef123456"; // 업적 수치 int value = 1; ProviderGoogle.achievementsIncrement(achievementId, value, (ResultAPI result) => { if (result.isSuccess()){ // 호출 성공 } }); |
API Reference: ProviderGoogle::achievementsIncrement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; // 업적 ID string achievementId = "abcdef123456"; // 업적 수치 int value = 1; ProviderGoogle::achievementsIncrement(achievementId, value, [=](ResultAPI const & result) { if(result.isSuccess()){ // 호출 성공 } }); |
API Reference: ProviderGoogle.achievementsIncrement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 Reference: ProviderGoogle.INSTANCE.achievementsIncrement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import com.hive.ProviderGoogle; import com.hive.ResultAPI; // 업적 ID String achievementId = "abcdef123456"; // 업적 수치 int value = 1; ProviderGoogle.INSTANCE.achievementsIncrement(achievementId, value, resultAPI -> { if (resultAPI.isSuccess()) { // 호출 성공 } }); |
Google Play 게임의 업적 목록 요청 (Helper)
Google Play 게임의 업적 목록을 요청하기 위해서는 showAchievements()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: AuthV4.Helper.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using hive; AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => { switch (result.code) { case ResultAPI.Code.Success: // 업적 표시와 함께 Success 전달 break; case ResultAPI.Code.AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI.Code.AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: AuthV4::Helper::showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#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: // 업적 표시와 함께 Success 전달 break; case ResultAPI::AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI::AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: AuthV4.Helper.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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 -> { // 업적 표시와 함께 Success 전달 } ResultAPI.Code.AuthV4ConflictPlayer -> { // 계정 충돌 } ResultAPI.Code.AuthV4GoogleLogout -> { // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 } else -> { // 기타 예외 상황 } } } }) |
API Reference: AuthV4.Helper.INSTANCE.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import com.hive.AuthV4; import com.hive.ResultAPI; AuthV4.Helper.INSTANCE.showAchievements((result, playerInfo) -> { switch (result.getCode()) { case Success: // 업적 표시와 함께 Success 전달 break; case AuthV4ConflictPlayer: // 계정 충돌 break; case AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
Google Play 게임의 업적 목록 요청 (Auth v4)
Google Play 게임의 업적 목록을 요청하기 위해서는 showAchievements()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: ProviderGoogle.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using hive; ProviderGoogle.showAchievements((ResultAPI result) => { switch (result.code) { case ResultAPI.Code.Success: // 업적 표시와 함께 Success 전달 break; case ResultAPI.Code.AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: ProviderGoogle::showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; ProviderGoogle::showAchievements([=](ResultAPI const & result) { switch (result.code) { case ResultAPI::Success: // 업적 표시와 함께 Success 전달 break; case ResultAPI::AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: ProviderGoogle.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import com.hive.ProviderGoogle import com.hive.ResultAPI ProviderGoogle.showAchievements(object : ProviderGoogle.GoogleAchievementsListener { override fun onAchievementsResult(resultAPI: ResultAPI) { when (resultAPI.code) { ResultAPI.Code.Success -> { // 업적 표시와 함께 Success 전달 } ResultAPI.Code.AuthV4GoogleLogout -> { // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 } else -> { // 기타 예외 상황 } } } }) |
API Reference: ProviderGoogle.INSTANCE.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import com.hive.ProviderGoogle; import com.hive.ResultAPI; ProviderGoogle.INSTANCE.showAchievements(resultAPI -> { switch (resultAPI.getCode()) { case Success: // 업적 표시와 함께 Success 전달 break; case AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
리더보드
Hive를 이용해 Google Play 게임의 리더보드 (Leaderboard) 기능을 사용하기 위해서는 ProviderGoogle 클래스를 사용하면 됩니다.
Google Play 게임의 리더보드 점수 갱신 요청
Google Play 게임의 리더보드 점수 갱신 요청을 하기 위해서는 leaderboardsSubmitScore()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.leaderboardsSubmitScore
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using hive // 리더보드 ID String leaderboardId = "12345abcde"; // 리더보드 점수 수치 long score = 100; ProviderGoogle.leaderboardsSubmitScore(leaderboardId, score, (ResultAPI result) => { if (result.isSuccess()) { // API 호출 성공 } }); |
API Reference: ProviderGoogle::leaderboardsSubmitScore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#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 호출 성공 } }); |
API Reference: ProviderGoogle.leaderboardsSubmitScore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 Reference: com.hive.ProviderGoogle.leaderboardsSubmitScore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 호출 성공 } }); |
Google Play 게임의 리더보드 목록 요청 (Helper)
Google Play 게임의 리더보드 목록을 요청하기 위해서는 showLeaderboards()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.AuthV4.Helper.showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using hive; AuthV4.Helper.showLeaderboard ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => { switch (result.code) { case ResultAPI.Code.Success: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI.Code.AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI.CodeAuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: com.hive.AuthV4.Helper.showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#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: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI::AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI::AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: break; } }); |
API Reference: Helper.showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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 -> { // 리더보드 표시와 함께 Success 전달 } ResultAPI.Code.AuthV4ConflictPlayer -> { // 계정 충돌 } ResultAPI.Code.AuthV4GoogleLogout -> { // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 } else -> { // 기타 예외 상황 } } } }) |
API Reference: AuthV4.Helper.INSTANCE.showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import com.hive.AuthV4; import com.hive.ResultAPI; AuthV4.Helper.INSTANCE.showLeaderboard((result, playerInfo) -> { switch (result.getCode()) { case Success: // 리더보드 표시와 함께 Success 전달 break; case AuthV4ConflictPlayer: // 계정 충돌 break; case AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
Google Play 게임의 리더보드 목록 요청 (Auth v4)
Google Play 게임의 리더보드 목록을 요청하기 위해서는 showLeaderboards()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.showLeaderboards
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using hive; ProviderGoogle.showLeaderboards(onLeaderboardsResult, (ResultAPI result) => { switch (result.code) { case ResultAPI.Code.Success: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI.CodeAuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: ProviderGoogle::showLeaderboards
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; ProviderGoogle::showLeaderboard([=](ResultAPI const & result) { switch (result.code) { case ResultAPI::Success: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI::AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: ProviderGoogle.showLeaderboards
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import com.hive.ProviderGoogle import com.hive.ResultAPI ProviderGoogle.showLeaderboards(object : ProviderGoogle.GoogleLeaderboardsListener { override fun onLeaderboardsResult(resultAPI: ResultAPI) { when (resultAPI.code) { ResultAPI.Code.Success -> { // 리더보드 표시와 함께 Success 전달 } ResultAPI.Code.AuthV4GoogleLogout -> { // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 } else -> { // 기타 예외 상황 } } } }) |
API Reference: com.hive.ProviderGoogle.showLeaderboards
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import com.hive.ProviderGoogle; import com.hive.ResultAPI; ProviderGoogle.INSTANCE.showLeaderboards(resultAPI -> { switch (resultAPI.getCode()) { case Success: // 리더보드 표시와 함께 Success 전달 break; case AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
Apple Game Center 게임 업적 및 리더보드
Apple 피쳐드 선정을 위해서는 Apple Game Center의 업적과 리더보드 기능 적용이 필요합니다.
Hive가 제공하는 Apple Game Center의 업적과 리더보드 기능은 유저 인증 상태와는 무관합니다. 즉, Apple Game Center의 업적과 리더보드 기능을 이용하는데 사용된 Apple Game Center 계정이 Hive 로그인 된 계정에 연동되어 있지 않거나 실제로 연동된 계정과 다를 수 있습니다.
Apple Game Center의 기능에 대한 자세한 설명은 Apple Game Center 가이드를 참고하세요.
업적 (Achievement)
Hive를 이용해 Apple Game Center의 업적(Achievement) 기능을 사용하기 위해서는 ProviderApple 클래스를 사용하면 됩니다.
Game Center 업적 목록 요청
Apple Game Center의 업적 목록 요청 기능을 사용하기 위해서는 loadAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.loadAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Provider Apple 업적 목록 요청 // using hive // Provider Apple 업적 목록 요청 콜백 핸들러 public void onLoadAchievements(ResultAPI result, List achievementList) { Logger.log("ProviderTestView.onLoadAchievements() Callback\nresult = " + result.toString() + "\n"); if (result.isSuccess() != true) return; } // Provider Apple 업적 목록 요청 ProviderApple.loadAchievements(onLoadAchievements); |
API Reference: ProviderApple::loadAchievements
1 2 3 4 5 6 7 8 9 10 |
// Provider Apple 업적 목록 요청 ProviderApple::loadAchievements([=](ResultAPI const & result,std::vector<ProviderAppleAchievement> const & achievements) { // 결과 콜백 cout<<"ProviderApple::loadAchievements() Callback"<<endl<<result.toString()<<endl; if (result.isSuccess() != true) return; }); |
API Reference: HIVEProviderApple::loadAchievements:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Provider Apple 업적 목록 요청 [HIVEProviderApple loadAchievements:^(HIVEResultAPI *result, NSArray<HIVEProviderAppleAchievement *> *achievements) { Loggerd(@"HIVEProviderApple.loadAchievements:\nresult = %@\nachievements = %@", result, achievements); if (result.isSuccess) { } else { } }]; |
Game Center 업적 전송 요청
Apple Game Center의 업적 전송 요청 기능을 사용하기 위해서는 업적 달성률과 업적 성공 시 상단 배너 노출 여부를 파라미터로 설정하여 reportAchievement()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.reportAchievement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using hive; // 업적 성취 %. 100일 경우 달성 완료 String achievementPercent = "100"; // 업적 성공 시 상단 배너 노출 여부. default false Boolean isShow = true; // 업적 Id String achievementId = "com.hivesdk.achievement.10hit"; ProviderApple.reportAchievement(achievementPercent, isShow, achievementId, (ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple::reportAchievement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; // 업적 성취 %. 100일 경우 달성 완료 string achievementPercent = "100"; // 업적 성공 시 상단 배너 노출 여부. default false bool isShow = true; // 업적 Id string achievementId = "com.hivesdk.achievement.10hit"; ProviderApple::reportAchievement(achievementPercent, isShow, achievementId, [=](ResultAPI const & result) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple.reportAchievement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import HIVEService // 업적 성취 %. 100일 경우 달성 완료 let achievementPercent = "100" // 업적 성공 시 상단 배너 노출 여부. default false let isShow = true // 업적 Id let achievementId = "com.hivesdk.achievement.10hit" ProviderApple.reportAchievement(achievementPercent, showsCompletionBanner: isShow, achievementIdentifier: achievementId) { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEProviderApple reportAchievement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#import <HIVEService/HIVEService-Swift.h> // 업적 성취 %. 100 인 경우 달성 완료 NSString *achievementPercent = @"100"; // 업적 성공시 상단 배너 노출 여부. default NO BOOL isShow = YES; // 업적 Id NSString *achievementId = @"com.hivesdk.achievement.10hit"; [HIVEProviderApple reportAchievement: achievementPercent showsCompletionBanner: isShow achievementIdentifier: achievementId handler: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 호출 성공 } }]; |
Game Center 업적 UI 요청(Helper)
Apple Game Center의 업적 UI를 요청하기 위해서는 showAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.AuthV4.Helper.showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using hive; AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => { switch (result.code) { case ResultAPI.Code.Success: // 업적 표시와 함께 Success 전달 break; case ResultAPI.Code.AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI.Code.AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: AuthV4::Helper::showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#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: // 업적 표시와 함께 Success 전달 break; case ResultAPI::AuthV4ConflictPlayer: // 계정 충돌 break; case ResultAPI::AuthV4GoogleLogout: // TODO: // Google Play 로그아웃 후 게임 로그아웃 실행 // 게임 재실행은 개발 스튜디오에서 처리해야함 break; default: // 기타 예외 상황 break; } }); |
API Reference: AuthV4Interface.helper().showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 import HIVEService AuthV4Interface.helper().showAchievements() { result, playerInfo in switch result.getCode() { case .success: // 업적 표시와 함께 Success 전달 case .authV4ConflitPlayer: // 계정 충돌 default: break } } |
API Reference: [HIVEAuthV4 helper] showAchievements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 #import <HIVEService/HIVEService-Swift.h> [[HIVEAuthV4 helper] showAchievements: ^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) { switch ([result getCode]) { case HIVEResultAPICodeSuccess: // 업적 표시와 함께 Success 전달 break; case HIVEResultAPICodeAuthV4ConflictPlayer: // 계정 충돌 break; default: // 기타 예외 상황 break; } }]; |
Game Center 업적 UI 요청
Apple Game Center의 업적 UI를 요청하기 위해서는 showAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: ProviderApple.showAchievements
1 2 3 4 5 6 7 |
using hive; ProviderApple.showAchievements((ResultAPI result) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple::showAchievements
1 2 3 4 5 6 7 8 9 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; ProviderApple::showAchievements([=](ResultAPI const & result) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple.showAchievements
1 2 3 4 5 6 7 |
import HIVEService ProviderApple.showAchievements() { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEProviderApple showAchievements
1 2 3 4 5 6 7 |
#import <HIVEService/HIVEService-Swift.h> [HIVEProviderApple showAchievements: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 호출 성공 } }]; |
Game Center 업적 초기화
Apple Game Center의 업적 초기화를 요청하기 위해서는 resetAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.resetAchievements
1 2 3 4 5 6 7 |
using hive; ProviderApple.resetAchievements((ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple::resetAchievements
1 2 3 4 5 6 7 8 9 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; ProviderApple::resetAchievements([=](ResultAPI const & result) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: resetAchievements(_:)
1 2 3 4 5 6 7 |
import HIVEService ProviderApple.resetAchievements() { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEProviderApple::resetAchievements:
1 2 3 4 5 6 7 |
#import <HIVEService/HIVEService-Swift.h> [HIVEProviderApple resetAchievements: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 호출 성공 } }]; |
리더보드 (Leaderboard)
Hive를 이용해 Apple Game Center의 리더보드 (Leaderboard) 기능을 사용하기 위해서는 ProviderApple 클래스를 사용하면 됩니다.
Game Center 리더보드 정보 전송
Apple Game Center에 리더보드 정보 전송을 위해서는 reportScore()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.reportScore
1 2 3 4 5 6 7 8 9 10 |
using hive; String playerScore = "1234"; String leaderBoardId = "com.hivesdk.leaderboard.10hit"; ProviderApple.reportScore(playerScore, leaderBoardId, (ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple::reportScore
1 2 3 4 5 6 7 8 9 10 11 12 |
#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()) { // 호출 성공 } }); |
API Reference: HIVEProviderApple::reportScore:leaderboardIdentifier:handler:
1 2 3 4 5 6 7 8 9 10 |
import HIVEService let playerScore = "1234" let leaderBoardId = "com.hivesdk.leaderboard.10hit" ProviderApple.reportScore(playScore, leaderboardIdentifier: leaderboardId) { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEProviderApple::reportScore:leaderboardIdentifier:handler:
1 2 3 4 5 6 7 8 9 10 |
#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]) { // 호출 성공 } }]; |
Game Center 리더보드 UI 요청(Helper)
Apple Game Cente에 리더보드 UI 요청을 위해서는 showLeaderboard()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.AuthV4.Helper.showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 using hive; AuthV4.Helper.showLeaderboard((ResultAPI result, AuthV4.PlayerInfo playerInfo) => { switch (result.code) { case ResultAPI.Code.Success: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI.Code.AuthV4ConflictPlayer: // 계정 충돌 break; default: // 기타 예외 상황 break; } }); |
API Reference: AuthV4::Helper::showLeaderboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 #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: // 리더보드 표시와 함께 Success 전달 break; case ResultAPI::AuthV4ConflictPlayer: // 계정 충돌 break; default: break; } }); |
API Reference: showLeaderboard(_:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 import HIVEService AuthV4Interface.helper().showLeaderboard() { result, playerInfo in switch result.getCode() { case .success: // 리더보드 표시와 함께 Success 전달 case .authV4ConflictPlayer: // 계정 충돌 default: break } } |
API Reference: HIVEProviderApple::showLeaderboard:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 현재 로그인한 Hive 계정이 GameCenter에 연결되지 않았을 경우 // 자동으로 GameCenter에 Connect를 시도함 #import <HIVEService/HIVEService-Swift.h> [[HIVEAuthV4 helper] showLeaderboard: ^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) { switch ([result getCode]) { case HIVEResultAPICodeSuccess: // 리더보드 표시와 함께 Success 전달 break; case HIVEResultAPICodeAuthV4ConflictPlayer: // 계정 충돌 break; default: // 기타 예외 상황 break; } }]; |
Game Center 리더보드 UI 요청
Apple Game Cente에 리더보드 UI 요청을 위해서는 showLeaderboard()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.showLeaderboard
1 2 3 4 5 6 7 |
using hive; ProviderApple.showLeaderboard((ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: ProviderApple::showLeaderboard
1 2 3 4 5 6 7 8 9 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; ProviderApple::showLeaderboard([=](ResultAPI const & result) { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: showLeaderboard(_:)
1 2 3 4 5 6 7 |
import HIVEService ProviderApple.showLeaderboard() { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVEProviderApple::showLeaderboard:
1 2 3 4 5 6 7 |
#import <HIVEService/HIVEService-Swift.h> [HIVEProviderApple showLeaderboard: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 호출 성공 } }]; |
사진첩 포스팅
게임에서 기기의 사진첩을 호출하고, 페이스북에 사진을 게시할 수 있습니다. 다음은 예제 코드입니다.
API Reference: SocialV4.sharePhoto
1 2 3 4 5 6 7 8 9 |
using hive; SocialV4.ProviderType providerType = SocialV4.ProviderType.FACEBOOK; SocialV4.sharePhoto(providerType, (ResultAPI result) => { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: SocialV4::sharePhoto
1 2 3 4 5 6 7 8 9 10 11 |
#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()) { // 호출 성공 } }); |
API Reference: SocialV4.sharePhoto
1 2 3 4 5 6 7 8 9 10 11 12 |
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) { // 호출 성공 } } }) |
API Reference: SocialV4.INSTANCE.sharePhoto
1 2 3 4 5 6 7 8 9 10 |
import com.hive.SocialV4; import com.hive.ResultAPI; SocialV4.ProviderType providerType = SocialV4.ProviderType.FACEBOOK; SocialV4.INSTANCE.sharePhoto(providerType, result -> { if (result.isSuccess()) { // 호출 성공 } }); |
API Reference: SocialV4Interface.sharePhoto
1 2 3 4 5 6 7 8 9 |
import HIVEService let providerType: SocialProviderType = .Facebook SocialV4Interface.sharePhoto(providerType) { result in if result.isSuccess() { // 호출 성공 } } |
API Reference: HIVESocialV4 sharePhoto
1 2 3 4 5 6 7 8 9 |
#import <HIVEService/HIVEService-Swift.h> HIVESocialProviderType providerType = HIVESocialProviderTypeFacebook; [HIVESocialV4 sharePhoto: providerType handler: ^(HIVEResultAPI *result) { if ([result isSuccess]) { // 호출 성공 } }]; |
Hive 커뮤니티 로그인을 통한 PC 게임 자동 로그인
Hive 커뮤니티 웹사이트에서 PC로 플레이 버튼을 클릭하면 크로스플레이 런처를 통해 PC 게임이 실행됩니다.
이 때, PC 게임은 Hive 커뮤니티의 ‘로그인 토큰값’을 이용하여 자동 로그인됩니다.
스팀 묵시적 로그인 (Unity Windows)
Hive SDK v4 Unity Windows 24.2.0부터 스팀 묵시적 로그인을 지원합니다. 만약 묵시적 로그인을 사용할 경우, AuthV4.Helper.signIn
을 반드시 사용해야 하며 AuthV4.signIn(AUTO,...)
는 사용할 수 없습니다. 앱 사용자는 게임 설치 후 최초로 한 번만 스팀 목시적 로그인을 수행합니다. 스팀 묵시적 로그인을 사용할 경우, 앱 삭제 시 SDK 설정 데이터를 저장한 propFolder
폴더를 제거하도록 구현해야 합니다.