Result API code AuthV4 Helper
Book Mark
| syncAccount | signIn | signOut | connect | disconnect | 
|---|---|---|---|---|
| showLeaderboard | showAchievements | showConflict | showConflict Info | switchAccount | 
| resolveConflict | getIDPList | showGameCenterLoginCancelDialog | 
AuthV4 Helper 적용 Flow¶
AuthV4.Helper.syncAccount¶
#if UNITY_ANDROID // 전처리는 플렛폼에 따라 다름
AuthV4.ProviderType providerType = AuthV4.ProviderType.GOOGLE
#elif UNITY_IPHONE // 전처리는 플렛폼에 따라 다름
AuthV4.ProviderType providerType = AuthV4.ProviderType.APPLE
#endif
AuthV4.Helper.syncAccount(providerType, (ResultAPI result, AuthV4.PlayerInfo playerInfo) =>{
    switch(result.code) {
        case ResultAPI.Code.AuthV4AppleLoginCancel:
        //AuthV4.helper.showGameCenterLoginCancelDialog API를 호출하여 Game Center 취소 안내 문구를 노출하세요.
        break;
        case ResultAPI.Code.AuthV4ConflictPlayer:
        //계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
        break;
        ...
        /*
        추가로 아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
      - AuthV4.checkProvider
      - AuthV4.selectConflict
      - AuthV4.resolveConflict
      */
    }   
});
#if __IOS__ // 전처리는 플렛폼에 따라 다름.
ProviderType providerType = ProviderType::APPLE;
#elif __ANDROID__ // 전처리는 플렛폼에 따라 다름.
ProviderType providerType = ProviderType::GOOGLE;
#endif
AuthV4::Helper::syncAccount(providerType, [](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
switch(result.code) {
    case ResultAPI::Code::AuthV4AppleLoginCancel:
    //AuthV4.helper.showGameCenterLoginCancelDialog API를 호출하여 Game Center 취소 안내 문구를 노출하세요.
    break;
    case ResultAPI::Code::AuthV4ConflictPlayer:
    //계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
    break;
    ...
    /*
        추가로 아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
        - AuthV4.checkProvider
        - AuthV4.selectConflict
        - AuthV4.resolveConflict
        */
}
});
AuthV4.ProviderType providerType = AuthV4.ProviderType.GOOGLE;
AuthV4.Helper.syncAccount(providerType, new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case AuthV4AppleLoginCancel:
                //AuthV4.helper.showGameCenterLoginCancelDialog API를 호출하여 Game Center 취소 안내 문구를 노출하세요.
                break;
            case AuthV4ConflictPlayer:
                //계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
                break;
            ...
            /*
            추가로 아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.checkProvider
            - AuthV4.selectConflict
            - AuthV4.resolveConflict
            */
        }
    }
});
HIVEProviderType providerType = kHIVEProviderTypeAPPLE;
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper syncAccount:providerType handler:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo){
    switch (result.code) {
        case kAuthV4AppleLoginCancel:
            //AuthV4.helper.showGameCenterLoginCancelDialog API를 호출하여 Game Center 취소 안내 문구를 노출하세요.
            break;
        case kAuthV4ConflictPlayer:
            //계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
            break;
        default:
            break;
        /*
        추가로 아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
        - AuthV4.checkProvider
        - AuthV4.selectConflict
        - AuthV4.resolveConflict
        */
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4AppleLoginCancel | Game Center 로그인이 취소되었습니다. | AuthV4.helper.showGameCenterLoginCancelDialog API를 호출하여 Game Center 취소 안내 문구를 노출하세요. | 
| (필수 구현) AuthV4ConflictPlayer | [ Custom UI를 사용 하는 경우 ] 계정 충돌 상황이 발생하였습니다. | 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요. | 
| AuthV4NotInitialized | HIVE SDK 초기화가 되어있지 않습니다. | AuthV4.setup API를 호출하여 HIVE SDK 초기화를 수행하세요. API 보기 | 
| AuthV4SigninFirst | 로그인이 되어있지 않습니다. | AuthV4.helper.signIn API를 호출하여 로그인을 수행하세요. API 보기 | 
| AuthV4NotSupportedProviderType | HIVE에서 지원하지 않는 Provider 입니다, | HIVE에서 지원하는 provider를 이용하여 시도해주세요. | 
| AuthV4.checkProvider API 응답 값과 동일한 응답 값 전달. | 계정 충돌 여부 확인을 위해 Provider에 로그인 시 에러가 발생하였습니다. | AuthV4.checkProvider ResultAPI 코드를 확인하세요. | 
| AuthV4.resolveConflict API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 충돌 상황이 발생하여 계정 전환을 시도 하던 중 에러가 발생하였습니다. | AuthV4.resolveConflict ResultAPI 코드를 확인하세요. | 
| AuthV4.selectConflict API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 충돌 상황이 발생하여 계정 전환을 시도 하던 중 에러가 발생하였습니다. | AuthV4.selectConflict ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.signIn¶
AuthV4.Helper.signIn((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
    switch(result.code) {
        case ResultAPI.Code.AuthV4ConflictPlayer:
        // 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
        break;
        case ResultAPI.Code.AuthV4HelperImplifiedLoginFail:
        // 명시적 로그인 UI를 노출하여 로그인을 진행하세요.
        break;
        ...
        // 추가로 AuthV4.showSignIn의 ResultAPI 코드가 전달될 수 있습니다.
    }
});
AuthV4::Helper::signIn([](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
    switch(result.code) {
        case ResultAPI::Code::AuthV4ConflictPlayer:
        // 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
        break;
        case ResultAPI::Code::AuthV4HelperImplifiedLoginFail:
        // 명시적 로그인 UI를 노출하여 로그인을 진행하세요.
        break;
        ...
        // 추가로 AuthV4.showSignIn의 ResultAPI 코드가 전달될 수 있습니다.
    }
});
AuthV4.Helper.signIn(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case AuthV4ConflictPlayer:
                // 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
                break;
            case AuthV4HelperImplifiedLoginFail:
                // 명시적 로그인 UI를 노출하여 로그인을 진행하세요.
                break;
            ...
            // 추가로 AuthV4.showSignIn의 ResultAPI 코드가 전달될 수 있습니다.
        }
    }
});
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper signIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
        case kAuthV4ConflictPlayer:
            // 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요.
            break;
        case kAuthV4HelperImplifiedLoginFail:
            // 명시적 로그인 UI를 노출하여 로그인을 진행하세요.
            break;
        default:
            break;
        // 추가로 AuthV4.showSignIn의 ResultAPI 코드가 전달될 수 있습니다.
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4ConflictPlayer | [ Custom UI를 사용 하는 경우 ] 계정 충돌 상황이 발생하였습니다. | 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요. | 
| (필수 구현) AuthV4HelperImplifiedLoginFail | [ Custom UI를 사용 하는 경우 ] 명시적 로그인 노출이 필요합니다. | 명시적 로그인 UI를 노출하여 로그인을 진행하세요. | 
| AuthV4NotInitialized | HIVE SDK 초기화가 되어있지 않습니다. | AuthV4.setup API를 호출하여 HIVE SDK 초기화를 수행하세요. API 보기 | 
| AuthV4AlreadyAuthorized | 기존에 로그인한 이력이 있습니다. | 기존에 로그인된 계정으로 로그인을 진행하기 위해 providerType을 Auto로 설정하여 signIn API를 호출해주세요. | 
| AuthV4InProgressSignIn | SignIn이 이미 진행 중입니다. | AuthV4.Helper.signIn API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4.showSignIn API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 명시적 로그인 UI를 노출하여 로그인을 시도하던 중 에러가 발생하였습니다. | AuthV4.showSignIn ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.signOut¶
| Code | Message | How to solve | 
|---|---|---|
| AuthV4.signOut API 응답 값과 동일한 응답 값 전달. | 로그아웃 진행 중 에러가 발생하였습니다. | AuthV4.signOut ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.connect¶
AuthV4.ProviderType providerType = AuthV4.ProviderType.HIVE; //connect 하고자 하는 provider를 넘겨줍니다.
AuthV4.Helper.connect (providerType, (ResultAPI result, AuthV4.PlayerInfo playerInfo) =>{
    switch(result.code) {
    case ResultAPI.Code.AuthV4AppleLoginCancel
    //계정 연동 실패되었음을 안내를 하세요.
    break;
        /*
        아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
        - AuthV4.connect
        - AuthV4.helper.showConflict
        - AuthV4.helper.switchAccount
        */
    }
});
ProviderType providerType = ProviderType::HIVE; //connect 하고자 하는 provider를 넘겨줍니다.
AuthV4::Helper::connect(providerType, [](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
    switch(result.code) {
        case ResultAPI::Code::AuthV4AppleLoginCancel
        //계정 연동 실패되었음을 안내를 하세요.
        break;
        /*
        아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.connect
        - AuthV4.helper.showConflict
            - AuthV4.helper.switchAccount
            */
    }
});
AuthV4.Helper.connect(providerType, new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case ResultAPI.Code.AuthV4AppleLoginCancel
                //계정 연동 실패되었음을 안내를 하세요.
                break;
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.connect
            - AuthV4.helper.showConflict
            - AuthV4.helper.switchAccount
            */
        }
    }
});
HIVEProviderType providerType = kHIVEProviderTypeHIVE; //connect 하고자 하는 provider를 넘겨줍니다.
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper connect:providerType handler:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
        case kAuthV4AppleLoginCancel:
            //계정 연동 실패되었음을 안내를 하세요.
            break;
        default:
            break;
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.connect
            - AuthV4.helper.showConflict
            - AuthV4.helper.switchAccount
            */
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4AppleLoginCancel | [ Custom UI를 사용 하지 않는 경우 ] 유저가 이미 GameCenter 로그인을 취소한 적이 있습니다. | 계정 연동 실패되었음을 안내를 하세요. | 
| AuthV4InProgressSignIn | 계정 연동이 이미 진행 중입니다. | AuthV4.Helper.connect API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4InProgressConnect | 계정 연동이 이미 진행 중입니다. | AuthV4.Helper.connect API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4.connect API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하는 경우 ] 계정 연동 진행 중 에러가 발생하였습니다. | AuthV4.connect ResultAPI 코드를 확인하세요. | 
| AuthV4.helper.showConflict API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 연동 진행 후 계정 충돌 처리 진행 중 에러가 발생하였습니다. | AuthV4.helper.showConflict ResultAPI 코드를 확인하세요. | 
| AuthV4.helper.switchAccount API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 연동 진행 후 충돌 발생한 계정 전환 처리 진행 중 에러가 발생하였습니다. | AuthV4.helper.switchAccount ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.disconnect¶
AuthV4.ProviderType providerType = AuthV4.ProviderType.HIVE; //disconnect 하고자 하는 provider를 넘겨줍니다.
AuthV4.Helper.disconnect(providerType, new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            //AuthV4.disconnect와 ResultAPI 코드가 전달됩니다.
        }
    }
});
HIVEProviderType providerType = kHIVEProviderTypeHIVE; //disconnect 하고자 하는 provider를 넘겨줍니다.
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper disconnect:providerType handler:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
            //AuthV4.disconnect와 ResultAPI 코드가 전달됩니다.
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| AuthV4.disconnect API 응답 값과 동일한 응답 값 전달. | 계정 연동 해제 진행 중 에러가 발생하였습니다. | AuthV4.disconnect ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.showLeaderboard¶
AuthV4.Helper.showLeaderboard(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.helper.syncAccount
            - AuthV4.helper.connect
            - providerGoogle.showLeaderBoard
            - providerApple.showLeaderBoard
            */
        }
    }
});
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper showLeaderboard:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.helper.syncAccount
            - AuthV4.helper.connect
            - providerGoogle.showLeaderBoard
            - providerApple.showLeaderBoard
            */
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| AuthV4NotInitialized | HIVE SDK 초기화가 되어있지 않습니다. | AuthV4.setup API를 호출하여 HIVE SDK 초기화를 수행하세요. API 보기 | 
| AuthV4SigninFirst | 로그인이 되어있지 않습니다. | AuthV4.helper.signIn API를 호출하여 로그인을 수행하세요. API 보기 | 
| AuthV4InProgressShowLeaderboard | LeaderBoard 노출이 이미 진행 중입니다. | AuthV4.Helper.leaderboard API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4InProgressSignIn | SignIn이 이미 진행 중입니다. | AuthV4.Helper.signIn API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4AppleNotSupported | HIVE에 연동 가능한 Provider가 아닙니다. | HIVE에 해당 Provider를 사용하도록 설정하세요. | 
| AuthV4.helper.syncAccount API 응답 값과 동일한 응답 값 전달. | 계정에 연동된 Provider 계정이 기기에 로그인 된 계정과 동일한지 체크하던 중 에러가 발생하였습니다. | AuthV4.helper.syncAccount ResultAPI 코드를 확인하세요. | 
| AuthV4.helper.connect API 응답 값과 동일한 응답 값 전달. | 기기에 로그인 된 계정을 현재 로그인 된 계정에 연동하던 중 에러가 발생하였습니다. | AuthV4.helper.connect ResultAPI 코드를 확인하세요. | 
| providerGoogle.showLeaderBoard API 응답 값과 동일한 응답 값 전달. | 각 OS에 맞는 Provider에 LeaderBoard 기능 호출 중 에러가 발생하였습니다. | 각각 providerGoogle.showLeaderBoard, providerApple.showLeaderBoard ResultAPI 코드를 확인하세요. | 
| providerApple.showLeaderBoard API 응답 값과 동일한 응답 값 전달. | 각 OS에 맞는 Provider에 LeaderBoard 기능 호출 중 에러가 발생하였습니다. | 각각 providerGoogle.showLeaderBoard, providerApple.showLeaderBoard ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.showAchievements¶
AuthV4.Helper.showAchievements(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.helper.syncAccount
            - AuthV4.helper.connect
            - providerGoogle.showAchievements
            - providerApple.showAchievements
            */
        }
    }
});
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper showAchievements:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.helper.syncAccount
            - AuthV4.helper.connect
            - providerGoogle.showAchievements
            - providerApple.showAchievements
            */
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| AuthV4NotInitialized | HIVE SDK 초기화가 되어있지 않습니다. | AuthV4.setup API를 호출하여 HIVE SDK 초기화를 수행하세요. API 보기 | 
| AuthV4SigninFirst | 로그인이 되어있지 않습니다. | AuthV4.helper.signIn API를 호출하여 로그인을 수행하세요. API 보기 | 
| AuthV4InProgressShowAchievements | ShowAchievements 노출이 이미 진행 중입니다. | AuthV4.Helper.showAchievements API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4InProgressSignIn | SignIn이 이미 진행 중입니다. | AuthV4.Helper.signIn API가 이미 수행 중인 경우 중복으로 API 호출이 불가능합니다. 이전 기능을 종료한 후 호출해 주세요. | 
| AuthV4AppleNotSupported | HIVE에 연동 가능한 Provider가 아닙니다. | HIVE에 해당 Provider를 사용하도록 설정하세요. | 
| AuthV4.helper.syncAccount API 응답 값과 동일한 응답 값 전달. | 계정에 연동된 Provider 계정이 기기에 로그인 된 계정과 동일한지 체크하던 중 에러가 발생하였습니다. | AuthV4.helper.syncAccount ResultAPI 코드를 확인하세요. | 
| AuthV4.helper.connect API 응답 값과 동일한 응답 값 전달. | 기기에 로그인 된 계정을 현재 로그인 된 계정에 연동하던 중 에러가 발생하였습니다. | AuthV4.helper.connect ResultAPI 코드를 확인하세요. | 
| providerGoogle.showAchievements API 응답 값과 동일한 응답 값 전달. | 각 OS에 맞는 Provider에 업적 기능 호출 중 에러가 발생하였습니다. | 각각 providerGoogle.showAchievements, providerApple.showAchievements ResultAPI 코드를 확인하세요. | 
| providerApple.showAchievements API 응답 값과 동일한 응답 값 전달. | 각 OS에 맞는 Provider에 업적 기능 호출 중 에러가 발생하였습니다. | 각각 providerGoogle.showAchievements, providerApple.showAchievements ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.showConflict¶
AuthV4.Helper.showConflict((ResultAPI result, AuthV4.PlayerInfo playerInfo) =>{
    switch(result.code) {
        /*
        아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
        - AuthV4.resolveConflict
        - AuthV4.selectConflict
        */
        case ResultAPI.Code.AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }
});
AuthV4::Helper::showConflict([](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
    switch(result.code) {
        /*
        아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
        - AuthV4.resolveConflict
        - AuthV4.selectConflict
        */
        case ResultAPI::Code::AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }
});
AuthV4.Helper.showConflict(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.resolveConflict
            - AuthV4.selectConflict
            */
            case AuthV4NotRegisteredDevice:
            // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
            break;
        }
    }
});
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper showConflict:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
            /*
            아래 함수와 동일한 ResultAPI 코드가 전달됩니다.
            - AuthV4.resolveConflict
                        - AuthV4.selectConflict
                        */
                        case kAuthV4NotRegisteredDevice:
                        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
                        break;
        }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4ConflictPlayer | [ Custom UI를 사용 하는 경우 ] 계정 충돌 상황이 발생하였습니다. | 계정 충돌 UI를 노출하여 충돌 상황을 해결 할 수 있도록 하세요. | 
| AuthV4.resolveConflict API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 충돌 상황이 발생하여 계정 전환을 시도 하던 중 에러가 발생하였습니다. | AuthV4.resolveConflict ResultAPI 코드를 확인하세요. | 
| AuthV4.selectConflict API 응답 값과 동일한 응답 값 전달. | [ Custom UI를 사용 하지 않는 경우 ] 계정 충돌 상황이 발생하여 계정 전환을 시도 하던 중 에러가 발생하였습니다. | AuthV4.selectConflict ResultAPI 코드를 확인하세요. | 
| AuthV4NotRegisteredDevice | 인증되지 않은 디바이스 입니다. | 계정 충돌 시, 선택한 계정으로 전환하는 중에 기기 인증이 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요. | 
AuthV4.Helper.showConflict¶
Int64 playerId = 10000000000;
AuthV4.Helper.ConflictSingleViewInfo viewInfo = new AuthV4.Helper.ConflictSingleViewInfo(playerId);
viewInfo.setValue("key_int",123);
viewInfo.setValue("key_double",12.333);
viewInfo.setValue("key_str","Player1");
AuthV4.Helper.showConflict(viewInfo, (ResultAPI result, AuthV4.PlayerInfo playerInfo) =>{
    switch(result.code) {
        case ResultAPI.Code.AuthV4PlayerChange:
        //전환된 계정으로 게임 플레이를 진행하도록 하세요.
        break;
        ...
        //추가로 AuthV4.helper.showConflict와 동일한 ResultAPI 코드가 전달됩니다.
        case ResultAPI.Code.AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }   
});
PlayerID playerId = 10000000000;
ConflictSingleViewInfo* info = new ConflictSingleViewInfo(playerId);
info->SetValue("key_int", 123);
info->SetValue("key_double", 12.333);
info->SetValue("key_str", "Player1");
AuthV4::Helper::syncAccount(info, [](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
    switch(result.code) {
        case ResultAPI::Code::AuthV4PlayerChange:
        //전환된 계정으로 게임 플레이를 진행하도록 하세요.
        break;
        ...
        //추가로 AuthV4.helper.showConflict와 동일한 ResultAPI 코드가 전달됩니다.
        case ResultAPI::Code::AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }  
});
long playerId = 10000000000l;
AuthV4.Helper.ConflictSingleViewInfo viewInfo = new AuthV4.Helper.ConflictSingleViewInfo(playerId);
viewInfo.setValue("key_int",123);
viewInfo.setValue("key_double",12.333);
viewInfo.setValue("key_str","Player1");
AuthV4.Helper.showConflict(viewInfo, new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case AuthV4PlayerChange:
                //전환된 계정으로 게임 플레이를 진행하도록 하세요.
                break;
            ...
            //추가로 AuthV4.helper.showConflict와 동일한 ResultAPI 코드가 전달됩니다.
            case AuthV4NotRegisteredDevice:
            // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
            break;
        }
    }
});
int64_t playerId = 10000000000;
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
HIVEConflictSingleViewInfo *viewInfo = [[HIVEConflictSingleViewInfo alloc] initWithPlayerId:playerId];
[viewInfo setValue:@"key_int" intValue:123];
[viewInfo setValue:@"key_double" doubleValue:12.333];
[viewInfo setValue:@"key_str" stringValue:@"Player1"];
[helper showConflict:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
        case kAuthV4PlayerChange:
            //전환된 계정으로 게임 플레이를 진행하도록 하세요.
            break;
            //...
            //추가로 AuthV4.helper.showConflict와 동일한 ResultAPI 코드가 전달됩니다.
            case kAuthV4NotRegisteredDevice:
            // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
            break;
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4PlayerChange | 계정이 전환되었습니다. | 전환된 계정으로 게임 플레이를 진행하도록 하세요. | 
| AuthV4InvalidConflictInfo | 계정 충돌이 발생되지 않은 상태입니다. | 계정 충돌이 발생되지 않은 상태입니다. 계정 충돌이 발생된 상황에서만 호출해주세요. | 
| AuthV4.showConflict API 응답 값과 동일한 응답 값 전달. | 계정 충돌 해소 UI 노출 중 에러가 발생하였습니다. | AuthV4.showConflict ResultAPI 코드를 확인하세요. | 
| AuthV4NotRegisteredDevice | 인증되지 않은 디바이스 입니다. | 계정 충돌 시, 선택한 계정으로 전환하는 중에 기기 인증이 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요. | 
AuthV4.Helper.switchAccount¶
AuthV4.Helper.switchAccount((ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
    switch(result.code) {
        case ResultAPI.Code.AuthV4PlayerChange:
        //전환된 계정으로 게임 플레이를 진행하도록 하세요.
        break;
        ...
        //추가로 AuthV4.selectConflict와 동일한 ResultAPI 코드가 전달됩니다.
        case ResultAPI.Code.AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }
});
AuthV4::Helper::switchAccount([](ResultAPI const & result, std::shared_ptr<PlayerInfo> playerInfo){
    switch(result.code) {
        case ResultAPI::Code::AuthV4PlayerChange:
        //전환된 계정으로 게임 플레이를 진행하도록 하세요.
        break;
        ...
        //추가로 AuthV4.selectConflict와 동일한 ResultAPI 코드가 전달됩니다.
        case ResultAPI::Code::AuthV4NotRegisteredDevice:
        // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
        break;
    }
});
AuthV4.Helper.switchAccount(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case AuthV4PlayerChange:
                //전환된 계정으로 게임 플레이를 진행하도록 하세요.
                break;
            ...
            //추가로 AuthV4.selectConflict와 동일한 ResultAPI 코드가 전달됩니다.
            case AuthV4NotRegisteredDevice:
            // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
            break;
        }
    }
});
HIVEAuthV4Helper *helper = [HIVEAuthV4 helper];
[helper switchAccount:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
    switch (result.code) {
        case kAuthV4PlayerChange:
            //전환된 계정으로 게임 플레이를 진행하도록 하세요.
            break;
            //...
            //추가로 AuthV4.selectConflict와 동일한 ResultAPI 코드가 전달됩니다.
            case kAuthV4NotRegisteredDevice:
            // 기기 인증에 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요.
            break;
    }
}];
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4PlayerChange | 계정이 전환되었습니다. | 전환된 계정으로 게임 플레이를 진행하도록 하세요. | 
| AuthV4InvalidConflictInfo | 계정 충돌이 발생되지 않은 상태입니다. | 계정 충돌이 발생되지 않은 상태입니다. 계정 충돌이 발생된 상황에서만 호출해주세요. | 
| AuthV4.selectConflict API 응답 값과 동일한 응답 값 전달. | 계정 충돌 발생한 계정으로 전환 중 에러가 발생하였습니다. | AuthV4.selectConflict ResultAPI 코드를 확인하세요. | 
| AuthV4NotRegisteredDevice | 인증되지 않은 디바이스 입니다. | 계정 충돌 시, 선택한 계정으로 전환하는 중에 기기 인증이 실패하여 로그인이 해제된 경우입니다. AUTO로 재로그인을 시도하거나 로그아웃하세요. | 
AuthV4.Helper.resolveConflict¶
AuthV4.Helper.resolveConflict(new AuthV4.Helper.AuthV4HelperListener() {
    @Override
    public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {
        switch(result.code) {
            case AuthV4PlayerResolved:
                //기존의 계정으로 게임 플레이를 지속하세요.
                break;
            ...
            //추가로 AuthV4.resolveConflict와 동일한 ResultAPI 코드가 전달됩니다.
        }
    }
});
| Code | Message | How to solve | 
|---|---|---|
| (필수 구현) AuthV4PlayerResolved | 계정 전환이 진행되지 않았습니다. | 기존의 계정으로 게임 플레이를 지속하세요. | 
| AuthV4InvalidConflictInfo | 계정 충돌이 발생되지 않은 상태입니다. | 계정 충돌이 발생되지 않은 상태입니다. 계정 충돌이 발생된 상황에서만 호출해주세요. | 
| AuthV4.resolveConflict API 응답 값과 동일한 응답 값 전달. | 계정 충돌 상황 해소 진행 중 에러가 발생하였습니다. | AuthV4.resolveConflict ResultAPI 코드를 확인하세요. | 
AuthV4.Helper.getIDPList¶
| Code | Message | How to solve | 
|---|---|---|
| Result API 없음 | 
AuthV4.Helper.showGameCenterLoginCancelDialog¶
| Code | Message | How to solve | 
|---|---|---|
| Result API 없음 | 
