부가 기능
인증에서는 다음과 같은 부가기능을 제공합니다.
Facebook 친구 목록 가져오기¶
getProviderFriendsList()
는 해당 게임을 하는 Facebook 친구의 PlayerID를 제공합니다. 게임을 하지만 Facebook 연동 이력이 없는 친구는 목록에 나타나지 않으며 게임 연동 이력은 있지만 현재 Facebook이 연동되어 있지 않은 경우 PlayerID -1을 리턴합니다.
Warning
2018년 5월 기준으로 Facebook 정책이 변경됨에 따라 기본 권한 항목이 변경되었습니다. Facebook 친구 목록 가져오기 기능을 계속 사용하려면 user_friends
권한 승인 요청이 필요합니다. Facebook 앱 검수 방법 확인하기
API Reference: 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 Reference: 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 Reference: 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 Reference: 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 Reference: 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 Reference: 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(Children's Online Privacy Protection Act)는 13세 미만 어린이의 개인 정보 보호를 목적으로 발효된 미국 법률입니다. Hive는 COPPA 규정에 대응하기 위해 Hive SDK v4.10.0부터 13세 미만 여부를 조회하는 getAgeGateU13()
메서드를 추가합니다. 사용자가 13세 미만일 경우 API가 반환하는 값은 true
입니다.
예제 코드¶
API Reference: AuthV4.getAgeGateU13
API Reference: AuthV4 ::getAgeGateU13
API Reference: AuthV4.getAgeGateU13
API Reference: AuthV4.INSTANCE.getAgeGateU13
API Reference: AuthV4Interface.getAgeGateU13
API Reference: 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()
메서드를 이용할 수 있습니다.
법정대리인 동의 여부 확인¶
Hive SDK v4 24.3.0부터 앱이 법정대리인 동의 확인 약관을 사용하는 경우, 앱 사용자 법정대리인 동의를 받았는지 여부를 Configuration.getLegalGuardianConsentAgree()
메서드를 반환받을 수 있습니다. 값이 true
이면 동의한 상태입니다.
OS 권한 다시 요청하기¶
AndroidManifest.xml 파일에는 게임에 필요 권한 목록이 정리되어 있습니다. 이 중 일부 권한을 해당 API의 String 리스트로 전달하여 사용해보세요. 유저가 특정 권한을 수락했거나 거절했는지 확인할 수 있습니다. 유저가 거절한 권한 중 Dangerous permission에 해당하는 권한이 있다면 OS 권한 동의 팝업으로 유저에게 다시 노출합니다. 그 외 항목은 디바이스 설정 상태에 따라 자동으로 수락 또는 거절 처리됩니다. 권한을 잘못 입력하거나 오타가 있을 경우 AndroidManifest.xml 파일에 선언하지 않은 권한으로 간주하여 거절 처리합니다.
이 기능은 Android 6.0 (API level 23) 이상 버전에서 동작합니다. Android API level이 23 미만이거나 iOS일 경우에는 미지원 ResultAPI를 전달합니다.
Note
본 내용은 Android 전용 기능입니다.
예제 코드¶
API Reference: 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 only
}
if (result.code == ResultAPI.Code.PlatformHelperOSVersionNotSupported) {
//Android OS version not supported.
}
if (granted != null && granted.Length > 0) {
foreach (String name in granted) {
// List of permissions accepted among requests
}
}
if (denied != null && denied.Length > 0) {
foreach (String name denied) {
// List of permissions denied among requests
}
}
});
#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) {
// requests 중 수락한 권한 목락
}
if (DeniedRequests.Num() > 0) {
// requests 중 거절한 권한 목락
}
}
break;
case FHiveResultAPI::ECode::PlatformHelperOSVersionNotSupported:
// Android OS version not supported.
break;
default:
// 기타 예외 상황
break;
}
}));
API Reference: 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 only
}
if (result.code == hive::ResultAPI::PlatformHelperOSVersionNotSupported) {
//Android OS version not supported.
}
if (!granted.empty()) {
for (string name : granted) {
// List of permissions accepted among requests
}
}
if (!denied.empty()) {
for (string name : denied) {
// List of permissions denied among requests
}
}
});
API Reference: 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()) {
// List of permissions accepted among requests
}
if (denied.isNotEmpty()) {
// List of permissions denied among requests
}
}
ResultAPI.Code.PlatformHelperOSVersionNotSupported -> {
//Android OS version not supported.
}
else -> {
// other exception situations
}
}
}
})
API Reference: 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()) {
// List of permissions accepted among requests
}
if (!denied.isEmpty()) {
// List of permissions denied among requests
}
break;
case PlatformHelperOSVersionNotSupported:
//Android OS version not supported.
break;
default:
// other exception situations
break;
}
});
기기 관리 서비스 이용하기¶
기기 관리 서비스 는 콘솔에서의 설정에 따라 로그인 시 자동으로 동작합니다. 로그인 후 게임에서는 AuthV4 클래스의 showDeviceManagement()
메서드를 호출하여 유저에게 기기 관리 목록을 보여줍니다. 기기 관리 서비스를 사용하는 게임은 기기 인증 실패로 인해 로그인이 해제되면 Result API의 AuthV4NotRegisteredDevice
코드를 처리하여 자동으로 재로그인을 시도하거나 로그아웃해야 합니다. 기기 관리 서비스 에 대한 자세한 내용은 운영가이드인 기기 관리 서비스 소개를 참고하세요.
API Reference: AuthV4.showDeviceManagement
API Reference: AuthV4 ::showDeviceManagement
API Reference: AuthV4.showDeviceManagement
API Reference: AuthV4.INSTANCE .showDeviceManagement
API Reference: AuthV4Interface .showDeviceManagement
API Reference: HIVEAuthV4 showDeviceManagement
Google Play 게임 업적 및 리더보드¶
Google 피처드 선정을 목적으로 개발한다면 Google Play 게임의 업적과 리더보드 기능을 적용해야 합니다.
만약 유저가 IdP 중 Google 계정으로 게임에 로그인하면 Play Games Services(PGS)에 자동 로그인되어 업적과 리더보드를 사용할 수 있습니다. 이후 유저가 PGS 설정 화면에서 로그아웃할 경우, 게임 내 로그아웃 버튼과 동일하게 동작해 게임에서 로그아웃됩니다. Google Play 게임의 기능에 대한 자세한 설명은 Google Play Games Services 가이드를 참고하세요.
Note
AuthV4Helper 클래스를 사용할 때
- 게임을 실행한 유저가 PGS 묵시적 로그인 시도 중 로그인을 거절한 경우, 이를 기억하고 더이상 묵시적 로그인을 시도하지 않습니다. 플레이어 세션이 유지되는 상태에서 자동 로그인이 가능하더라도 묵시적 로그인이 거절된 상태를 계속 기억합니다.
- PGS에 로그인하지 않은 유저가 업적을 달성해도 그 결과는 PGS로 전송되지 않습니다.
이 내용은 Google Play Games Services 가이드를 준수합니다.
PlayerID 전달¶
Google Play 게임에 PlayerID를 요청하려면 ProviderGoogle 클래스의 getGooglePlayerId()
메서드를 호출해야 합니다. 이 메서드를 호출하면 Google Play 게임의 PlayerID뿐 아니라 유효성을 검증하는 AuthCode도 함께 전달됩니다.
API Reference: hive.ProviderGoogle.getGooglePlayerId
API Reference: ProviderGoogle::getGooglePlayerId
API Reference: com.hive.ProviderGoogle.getGooglePlayerId
업적¶
Hive를 이용해 Google Play 게임의 업적(Achievement) 기능을 사용하기 위해서는 ProviderGoogle 클래스를 사용하면 됩니다.
Google Play 게임의 숨겨진 업적 공개¶
Google Play 게임의 숨겨진 업적 공개 기능을 사용하기 위해서는 achievementsReveal()
메서드를 호출하세요. achievementsReveal()
사용 시 업적이 0% 로 공개만 될 뿐 달성되지는 않습니다.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.achievementsReveal
API Reference: ProviderGoogle::achievementsReveal
API Reference: 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 Reference: ProviderGoogle .INSTANCE.achievementsReveal
Google Play 게임의 업적 달성 완료 요청¶
Google Play 게임의 업적 달성 완료 요청 기능을 사용하기 위해서는 achievementsUnlock()
메서드를 호출하세요. achievementsUnlock()
사용 시 업적의 공개 여부와 상관없이 업적이 100%로 달성됩니다.
다음은 예제 코드입니다.
API Reference: ProviderGoogle.achievementsUnlock
API Reference: ProviderGoogle::achievementsUnlock
API Reference: ProviderGoogle.achievementsUnlock
import com.hive.ProviderGoogle
import com.hive.ResultAPI
//Achievement ID
val achievementId = "abcdef123456"
ProviderGoogle.achievementsUnlock(achievementId, object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// call successful
}
}
})
API Reference: ProviderGoogle .INSTANCE.achievementsUnlock
Google Play 게임의 업적 수치 증가 요청¶
Google Play 게임의 업적 수치 증가 요청 기능을 사용하기 위해서는 업적 수치를 파라미터로 설정하여 achievementsIncrement()
메서드를 호출하세요. 업적 수치는 해당 API가 호출되었을 시 설정된 value 값의 합산이며 총 합산이 Max가 될 경우 자동으로 업적이 달성됩니다.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.achievementsIncrement
#include "HiveProviderGoogle.h"
// 업적 ID
FString AchievementId = TEXT("abcdef123456");
// 업적 수치
int32 Value = 1;
FHiveProviderGoogle::AchievementsIncrement(AchievementId, Value, FHiveProviderGoogleOnAchievementsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API 호출 성공
}
}));
API Reference: 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 Reference: ProviderGoogle.achievementsIncrement
import com.hive.ProviderGoogle
import com.hive.ResultAPI
//Achievement ID
val achievementId = "abcdef123456"
// Achievement numbers
val value = 1
ProviderGoogle.achievementsIncrement(achievementId, value, object : ProviderGoogle.GoogleAchievementsListener {
override fun onAchievementsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// call successful
}
}
})
API Reference: ProviderGoogle .INSTANCE.achievementsIncrement
Google Play 게임의 업적 목록 요청 (Helper)¶
Note
SDK 4.7.0부터 기기에 로그인 된 계정과 PlayerID에 연동된 계정을 더 쉽게 비교할 수 있도록 Helper가 제공됩니다. 연동된 계정이 다를 경우에 대한 처리는 기기에 로그인된 IdP 계정 확인을 참고하세요.
Google Play 게임의 업적 목록을 요청하기 위해서는 showAchievements()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: AuthV4.Helper.showAchievements
using hive;
AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with achievement indication
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowAchievements(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
switch (Result.Code) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// 계정 충돌
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Play 로그아웃 후 게임 로그아웃 실행
// 게임 재실행은 개발 스튜디오에서 처리해야함
break;
default:
// 기타 예외 상황
break;
}
}));
API Reference: 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:
// Deliver Success with achievement indication
break;
case ResultAPI::AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
API Reference: 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 -> {
// Deliver Success with achievement indication
}
ResultAPI.Code.AuthV4ConflictPlayer -> {
// account conflict
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
}
else -> {
// other exception situations
}
}
}
})
API Reference: AuthV4.Helper.INSTANCE.showAchievements
import com.hive.AuthV4;
import com.hive.ResultAPI;
AuthV4.Helper.INSTANCE.showAchievements((result, playerInfo) -> {
switch (result.getCode()) {
case Success:
// Deliver Success with achievement indication
break;
case AuthV4ConflictPlayer:
// account conflict
break;
case AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
Warning
Play Games Services 설정에서 로그아웃하는 경우, 로그아웃을 호출한 후 콜백으로 ResultAPI.Code.AuthV4GoogleLogout 에러코드가 전달됩니다. 로그아웃이 완료된 상태이므로 게임 내에서 이를 알리는 팝업을 노출하고 게임 타이틀로 이동합니다.
Google Play 게임의 업적 목록 요청 (Auth v4)¶
Google Play 게임의 업적 목록을 요청하기 위해서는 showAchievements()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: ProviderGoogle .showAchievements
using hive;
ProviderGoogle.showAchievements((ResultAPI result) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with achievement indication
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
#include "HiveProviderGoogle.h"
FHiveProviderGoogle::ShowAchievements(FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Play 로그아웃 후 게임 로그아웃 실행
// 게임 재실행은 개발 스튜디오에서 처리해야함
break;
default:
// 기타 예외 상황
break;
}));
API Reference: 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:
// Deliver Success with achievement indication
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
API Reference: 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 -> {
// Deliver Success with achievement indication
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
}
else -> {
// other exception situations
}
}
}
})
API Reference: ProviderGoogle.INSTANCE.showAchievements
import com.hive.ProviderGoogle;
import com.hive.ResultAPI;
ProviderGoogle.INSTANCE.showAchievements(resultAPI -> {
switch (resultAPI.getCode()) {
case Success:
// Deliver Success with achievement indication
break;
case AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
Warning
Play Games Services 설정에서 로그아웃하는 경우 콜백으로 ResultAPI.Code.AuthV4GoogleLogout 에러코드가 전달됩니다. 이 에러가 전달되면 게임 내 로그아웃 버튼을 눌렀을 때와 동일하게 처리해야 합니다.
리더보드¶
Hive를 이용해 Google Play 게임의 리더보드 (Leaderboard) 기능을 사용하기 위해서는 ProviderGoogle 클래스를 사용하면 됩니다.
Google Play 게임의 리더보드 점수 갱신 요청¶
Google Play 게임의 리더보드 점수 갱신 요청을 하기 위해서는 leaderboardsSubmitScore()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.leaderboardsSubmitScore
#include "HiveProviderGoogle.h"
// 리더보드 ID
FString LeaderboardId = TEXT("12345abcde");
// 리더보드 점수 수치
int64 Score = 100;
FHiveProviderGoogle::LeaderboardsSubmitScore(LeaderboardId, Score, FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API 호출 성공
}
}));
API Reference: ProviderGoogle::leaderboardsSubmitScore
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Leaderboard ID
string leaderboardId = "12345abcde";
// Leaderboard score number
long score = 100;
ProviderGoogle::leaderboardsSubmitScore(leaderboardId, score, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// API call successful
}
});
API Reference: ProviderGoogle.leaderboardsSubmitScore
import com.hive.ProviderGoogle
import com.hive.ResultAPI
// Leaderboard ID
val leaderboardId = "12345abcde"
// Leaderboard score number
val score = 100L
ProviderGoogle.leaderboardsSubmitScore(leaderboardId, score, object : ProviderGoogle.GoogleLeaderboardsListener {
override fun onLeaderboardsResult(resultAPI: ResultAPI) {
if (resultAPI.isSuccess) {
// API call successful
}
}
})
API Reference: com.hive.ProviderGoogle.leaderboardsSubmitScore
import com.hive.ProviderGoogle;
import com.hive.ResultAPI;
// Leaderboard ID
String leaderboardId = "12345abcde";
// Leaderboard score number
long score = 100;
ProviderGoogle.INSTANCE.leaderboardsSubmitScore(leaderboardId, score, resultAPI -> {
if (resultAPI.isSuccess()) {
// API call successful
}
});
Google Play 게임의 리더보드 목록 요청 (Helper)¶
Google Play 게임의 리더보드 목록을 요청하기 위해서는 showLeaderboards()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.AuthV4.Helper.showLeaderboard
using hive;
AuthV4.Helper.showLeaderboard ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with leaderboard display
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI.CodeAuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowLeaderboard(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// 계정 충돌
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Play 로그아웃 후 게임 로그아웃 실행
// 게임 재실행은 개발 스튜디오에서 처리해야함
break;
default:
// 기타 예외 상황
break;
}));
API Reference: 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:
// Deliver Success with leaderboard display
break;
case ResultAPI::AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
break;
}
});
API Reference: 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 -> {
// Deliver Success with leaderboard display
}
ResultAPI.Code.AuthV4ConflictPlayer -> {
// account conflict
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
}
else -> {
// other exception situations
}
}
}
})
API Reference: AuthV4.Helper.INSTANCE.showLeaderboard
import com.hive.AuthV4;
import com.hive.ResultAPI;
AuthV4.Helper.INSTANCE.showLeaderboard((result, playerInfo) -> {
switch (result.getCode()) {
case Success:
// Deliver Success with leaderboard display
break;
case AuthV4ConflictPlayer:
// account conflict
break;
case AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
Warning
Play Games Services 설정에서 로그아웃하는 경우, 로그아웃을 호출한 후 콜백으로 ResultAPI.Code.AuthV4GoogleLogout 에러코드가 전달됩니다. 로그아웃이 완료된 상태이므로 게임 내에서 이를 알리는 팝업을 노출하고 게임 타이틀로 이동합니다.
Google Play 게임의 리더보드 목록 요청 (Auth v4)¶
Google Play 게임의 리더보드 목록을 요청하기 위해서는 showLeaderboards()
메서드를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderGoogle.showLeaderboards
using hive;
ProviderGoogle.showLeaderboards(onLeaderboardsResult, (ResultAPI result) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with leaderboard display
break;
case ResultAPI.CodeAuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
#include "HiveProviderGoogle.h"
FHiveProviderGoogle::ShowLeaderboard(FHiveProviderGoogleOnLeaderboardsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4GoogleLogout:
// TODO:
// Google Play 로그아웃 후 게임 로그아웃 실행
// 게임 재실행은 개발 스튜디오에서 처리해야함
break;
default:
// 기타 예외 상황
break;
}));
API Reference: 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:
// Deliver Success with leaderboard display
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
API Reference: 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 -> {
// Deliver Success with leaderboard display
}
ResultAPI.Code.AuthV4GoogleLogout -> {
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
}
else -> {
// other exception situations
}
}
}
})
API Reference: com.hive.ProviderGoogle.showLeaderboards
import com.hive.ProviderGoogle;
import com.hive.ResultAPI;
ProviderGoogle.INSTANCE.showLeaderboards(resultAPI -> {
switch (resultAPI.getCode()) {
case Success:
// Deliver Success with leaderboard display
break;
case AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
Warning
Play Games Services 설정에서 로그아웃하는 경우 콜백으로 ResultAPI.Code.AuthV4GoogleLogout 에러코드가 전달됩니다. 이 에러가 전달되면 게임 내 로그아웃 버튼을 눌렀을 때와 동일하게 처리해야 합니다.
Apple Game Center 게임 업적 및 리더보드¶
Apple 피쳐드 선정을 위해서는 Apple Game Center의 업적과 리더보드 기능 적용이 필요합니다.
Hive가 제공하는 Apple Game Center의 업적과 리더보드 기능은 유저 인증 상태와는 무관합니다. 즉, Apple Game Center의 업적과 리더보드 기능을 이용하는데 사용된 Apple Game Center 계정이 Hive 로그인 된 계정에 연동되어 있지 않거나 실제로 연동된 계정과 다를 수 있습니다.
Apple Game Center의 기능에 대한 자세한 설명은 Apple Game Center 가이드를 참고하세요.
Note
- iOS 엔터프라이즈 빌드에서는 Apple Game Center를 지원하지 않습니다.
- 업적 (Achievement)
- 리더보드 (Leaderboard)
업적 (Achievement)¶
Hive를 이용해 Apple Game Center의 업적(Achievement) 기능을 사용하기 위해서는 ProviderApple 클래스를 사용하면 됩니다.
Game Center 업적 목록 요청¶
Apple Game Center의 업적 목록 요청 기능을 사용하기 위해서는 loadAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.loadAchievements
// Request achievement list to Provider Apple
// using hive
// Callback handler managing the request for achievement list to Provider Apple
public void onLoadAchievements(ResultAPI result, List achievementList) {
Logger.log("ProviderTestView.onLoadAchievements() Callback\nresult = " + result.toString() + "\n");
if (result.isSuccess() != true)
return;
}
// Request achievement list to Provider Apple
ProviderApple.loadAchievements(onLoadAchievements);
API Reference: ProviderApple::loadAchievements
// Request achievement list to Provider Apple
ProviderApple::loadAchievements([=](ResultAPI const & result,std::vector<ProviderAppleAchievement>; const & achievements) {
// Result callback
cout<<"ProviderApple::loadAchievements() Callback"<<endl<<result.toString()<<endl;
if (result.isSuccess() != true)
return;
});
API Reference: HIVEProviderApple::showAchievements:
// Request achievement list to Provider Apple
[HIVEProviderApple loadAchievements:^(HIVEResultAPI <i>result, NSArray<HIVEProviderAppleAchievement </i>>; *achievements) {
Loggerd(@"HIVEProviderApple.loadAchievements:\nresult = %@\nachievements = %@", result, achievements);
if (result.isSuccess) {
}
else {
}
}];
Game Center 업적 전송 요청¶
Apple Game Center의 업적 전송 요청 기능을 사용하기 위해서는 업적 달성률과 업적 성공 시 상단 배너 노출 여부를 파라미터로 설정하여 reportAchievement()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive .ProviderApple.reportAchievement
using hive;
//Achievement achieved %. Achievement completed at 100
String achievementPercent = "100";
// Whether to display the top banner when an achievement is successful. default false
Boolean isShow = true;
//Achievement 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");
// 업적 성공 시 상단 배너 노출 여부. default 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 Reference: ProviderApple ::reportAchievement
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
//Achievement achieved %. Achievement completed at 100
string achievementPercent = "100";
// Whether to display the top banner when an achievement is successful. default false
bool isShow = true;
//Achievement Id
string achievementId = "com.hivesdk.achievement.10hit";
ProviderApple::reportAchievement(achievementPercent, isShow, achievementId, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// call successful
}
});
API Reference: ProviderApple.reportAchievement
import HIVEService
//Achievement achieved %. Achievement completed at 100
letachievementPercent = "100"
// Whether to display the top banner when an achievement is successful. default false
let isShow = true
//Achievement Id
let achievementId = "com.hivesdk.achievement.10hit"
ProviderApple.reportAchievement(achievementPercent, showsCompletionBanner: isShow, achievementIdentifier: achievementId) { result in
if result.isSuccess() {
// call successful
}
}
API Reference: HIVEProviderApple reportAchievement
#import <HIVEService/HIVEService-Swift.h>
//Achievement achieved %. Achievement complete when 100
NSString *achievementPercent = @"100";
// Whether to display the top banner when an achievement is successful. default NO
BOOL isShow = YES;
//Achievement Id
NSString *achievementId = @"com.hivesdk.achievement.10hit";
[HIVEProviderApple reportAchievement: achievementPercent showsCompletionBanner: isShow achievementIdentifier: achievementId handler: ^(HIVEResultAPI *result) {
if ([result isSuccess]) {
// call successful
}
}];
Game Center 업적 UI 요청(Helper)¶
Note
- SDK 4.7.0부터 기기에 로그인 된 계정과 PlayerID에 연동된 계정을 더 쉽게 비교할 수 있도록 Helper가 제공됩니다. 연동된 계정이 다를 경우에 대한 처리는 기기에 로그인된 IdP 계정 확인을 참고하세요.
Apple Game Center의 업적 UI를 요청하기 위해서는 showAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.AuthV4.Helper.showAchievements
using hive;
AuthV4.Helper.showAchievements ((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with achievement indication
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI.Code.AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowAchievements(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
switch (Result.Code) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// 계정 충돌
break;
default:
// 기타 예외 상황
break;
}
}));
API Reference: 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:
// Deliver Success with achievement indication
break;
case ResultAPI::AuthV4ConflictPlayer:
// account conflict
break;
case ResultAPI::AuthV4GoogleLogout:
//TODO:
// After logging out of Google Play, log out of the game
// Relaunching the game must be handled by the development studio
break;
default:
// other exception situations
break;
}
});
API Reference: AuthV4Interface .helper().showAchievements
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to GameCenter
import HIVEService
AuthV4Interface.helper().showAchievements() { result, playerInfo in
switch result.getCode() {
case .success:
// Deliver Success with achievement indication
case .authV4ConflitPlayer:
// account conflict
default:
break
}
}
API Reference: [ HIVEAuthV4 helper] showAchievements
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to GameCenter
#import <HIVEService/HIVEService-Swift.h>
[[HIVEAuthV4 helper] showAchievements: ^(HIVEResultAPI <i>result, HIVEPlayerInfo </i>playerInfo) {
switch ([result getCode]) {
case HIVEResultAPICodeSuccess:
// Deliver Success with achievement indication
break;
case HIVEResultAPICodeAuthV4ConflictPlayer:
// account conflict
break;
default:
// other exception situations
break;
}
}];
Game Center 업적 UI 요청¶
Apple Game Center의 업적 UI를 요청하기 위해서는 showAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: ProviderApple.showAchievements
API Reference: ProviderApple::showAchievements
API Reference: ProviderApple.showAchievements
API Reference: HIVEProviderApple showAchievements
Game Center 업적 초기화¶
Apple Game Center의 업적 초기화를 요청하기 위해서는 resetAchievements()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive.ProviderApple.resetAchievements
API Reference: ProviderApple ::resetAchievements
API Reference: resetAchievements(_:)
API Reference: HIVEProviderApple showAchievements
리더보드 (Leaderboard)¶
Hive를 이용해 Apple Game Center의 리더보드 (Leaderboard) 기능을 사용하기 위해서는 ProviderApple 클래스를 사용하면 됩니다.
Game Center 리더보드 정보 전송¶
Apple Game Center에 리더보드 정보 전송을 위해서는 reportScore()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive .ProviderApple.reportScore
#include "HiveProviderApple.h"
FString PlayerScore = TEXT("1234");
FString LeaderBoardId = TEXT("com.hivesdk.leaderboard.10hit");
FHiveProviderApple::ReportScore(PlayerScore, LeaderBoardId, FHiveProviderAppleOnReportLeaderboard::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API 호출 성공
}
}));
API Reference: 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 Reference: 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
}
}];
Game Center 리더보드 UI 요청(Helper)¶
Apple Game Cente에 리더보드 UI 요청을 위해서는 showLeaderboard()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive .AuthV4.Helper.showLeaderboard
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to GameCenter
using hive;
AuthV4.Helper.showLeaderboard((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
switch (result.code) {
case ResultAPI.Code.Success:
// Deliver Success with leaderboard display
break;
case ResultAPI.Code.AuthV4ConflictPlayer:
// account conflict
break;
default:
// other exception situations
break;
}
});
#include "HiveAuthV4.h"
FHiveAuthV4::Helper::ShowLeaderboard(FHiveAuthV4HelperDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TOptional<FHivePlayerInfo>& PlayerInfo) {
case FHiveResultAPI::ECode::Success:
// 업적 표시와 함께 Success 전달
break;
case FHiveResultAPI::ECode::AuthV4ConflictPlayer:
// 계정 충돌
break;
default:
// 기타 예외 상황
break;
}));
API Reference: AuthV4 ::Helper::showLeaderboard
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to 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:
// Deliver Success with leaderboard display
break;
case ResultAPI::AuthV4ConflictPlayer:
// account conflict
break;
default:
break;
}
});
API Reference: showLeaderboard
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to GameCenter
import HIVEService
AuthV4Interface.helper().showLeaderboard() { result, playerInfo in
switch result.getCode() {
case .success:
// Deliver Success with leaderboard display
case .authV4ConflictPlayer:
// account conflict
default:
break
}
}
API Reference: HIVEProviderApple ::showLeaderboard:
// If the currently logged in Hive account is not connected to GameCenter
// Automatically attempts to connect to GameCenter
#import <HIVEService/HIVEService-Swift.h>
[[HIVEAuthV4 helper] showLeaderboard: ^(HIVEResultAPI <i>result, HIVEPlayerInfo </i>playerInfo) {
switch ([result getCode]) {
case HIVEResultAPICodeSuccess:
// Deliver Success with leaderboard display
break;
case HIVEResultAPICodeAuthV4ConflictPlayer:
// account conflict
break;
default:
// other exception situations
break;
}
}];
Game Center 리더보드 UI 요청¶
Apple Game Cente에 리더보드 UI 요청을 위해서는 showLeaderboard()
함수를 호출하세요.
다음은 예제 코드입니다.
API Reference: hive .ProviderApple.showLeaderboard
API Reference: ProviderApple ::showLeaderboard
API Reference: showLeaderboard(_:)
API Reference: HIVEProviderApple ::showLeaderboard:
사진첩 포스팅¶
게임에서 기기의 사진첩을 호출하고, 페이스북에 사진을 게시할 수 있습니다. 다음은 예제 코드입니다.
API Reference: SocialV4. sharePhoto
API Reference: SocialV4::sharePhoto
API Reference: SocialV4.sharePhoto
API Reference: SocialV4.INSTANCE. sharePhoto
API Reference: SocialV4Interface.sharePhoto
API Reference: HIVESocialV4 sharePhoto
Hive 커뮤니티 로그인을 통한 PC 게임 자동 로그인¶
Hive 커뮤니티 웹사이트에서 PC로 플레이 버튼을 클릭하면 크로스플레이 런처를 통해 PC 게임이 실행됩니다.
이 때, PC 게임은 Hive 커뮤니티의 ‘로그인 토큰값’을 이용하여 자동 로그인됩니다.
Warning
Hive 커뮤니티 로그인을 통한 PC 게임 자동 로그인 기능은 Hive SDK v4 24.0.0 이상의 Windows 버전에서만 동작합니다.
스팀 묵시적 로그인 (Unity Windows)¶
Hive SDK v4 Unity Windows 24.2.0부터 스팀 묵시적 로그인을 지원합니다. 만약 묵시적 로그인을 사용할 경우, AuthV4.Helper.signIn
을 반드시 사용해야 하며 AuthV4.signIn(AUTO,...)
는 사용할 수 없습니다. 앱 사용자는 게임 설치 후 최초로 한 번만 스팀 목시적 로그인을 수행합니다. 스팀 묵시적 로그인을 사용할 경우, 앱 삭제 시 SDK 설정 데이터를 저장한 propFolder
폴더를 제거하도록 구현해야 합니다.