Skip to content

Terms

Terms and conditions are documents that specify the rights, obligations, and responsibilities between the service provider and the user. When providing game services, app developers must notify or obtain consent from game users regarding the terms of use, privacy policy, etc.


Hive SDK provisioning provides users with the ability to register and manage terms that they must agree to or decline when starting the app. The features related to terms provided in provisioning are as follows.

  • Review terms and conditions
  • Delete consent history
  • COPPA compliance
  • GDPR compliance
  • Verify consent of legal representative
Info

For more information on registering terms, please refer to the Console Guide > Provisioning > Terms.

Review terms

The Hive SDK determines the user's access country based on the IP address used during initialization and matches it with the country-specific terms registered in the Hive console for display. After entering the game, regardless of whether the country-specific terms are displayed, all users should be able to check the terms and privacy policy within the app according to the app language value, and a feature (e.g., a button to review the terms again) should be provided.

To implement the terms review, first register the terms in the Hive console. After that, implement it so that when the terms review button is pressed in the app, AuthV4.showTerms() is executed. The Hive SDK automatically selects and displays the terms according to the app's language value.


This is an example code that exposes the terms of service.

API Reference: Unity®

using hive;    
    AuthV4.showTerms((ResultAPI result) => {    
        if (result.isSuccess()) {    
            // API call success    
        }    
});

API Reference: C++

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    AuthV4::showTerms([=](ResultAPI const & result) {    
        if (result.isSuccess()) {    
            // API call success    
        }    
});

API Reference: Kotlin

import com.hive.AuthV4;    
    import com.hive.ResultAPI;
    AuthV4.showTerms(object : AuthV4.AuthV4ShowTermsListener {    
        override fun onAuthV4ShowTerms(result: ResultAPI) {    
            if (result.isSuccess) {    
                // API call success    
            }    
        }    
})

API Reference: Java

import com.hive.AuthV4;    
    import com.hive.ResultAPI;    
    AuthV4.INSTANCE.showTerms(result -> {    
        if (result.isSuccess()) {    
            // API call success    
        }    
});

API Reference: Swift

import HIVEService    
    AuthV4Interface.showTerms() { result in    
        if result.isSuccess() {    
            // API call success    
        }    
}

API Reference: Objective-C

#import <HIVEService/HIVEService-Swift.h>    
    [HIVEAuthV4 showTerms:^(HIVEResultAPI *result) {     
        if ([result isSuccess]) {    
            // API call success    
        }    
}];
#include "HiveAuthV4.h"

FHiveAuthV4::ShowTerms(FHiveAuthV4OnShowTermsDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
        if (Result.IsSuccess()) {
                // Call successful
        }
}));

Deleting agreement history (device-based terms)

If you use the device-based terms, once the user agrees to the game terms the first time they launch the game, the agreement history will remain on the user's device. The AuthV4.resetAgreement method below deletes this history.

using hive;

AuthV4.resetAgreement();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

AuthV4::resetAgreement()
import com.hive.AuthV4;

AuthV4.resetAgreement()
import com.hive.AuthV4;

AuthV4.INSTANCE.resetAgreement();
import HIVEService

AuthV4Interface.resetAgreement()
#import <HIVEService/HIVEService-Swift.h>

[AuthV4Interface resetAgreement]
#include "HiveAuthV4.h"

FHiveAuthV4::ResetAgreement();


When using device-based terms, if the user restarts the game after deleting their account, the consent information for the deleted account remains on the device, and the terms consent popup does not appear. To re-display the terms consent popup when restarting the app after account deletion (i.e., when initializing the Hive SDK), follow the steps below.

  1. Call AuthV4.resetAgreement to delete the previously saved agreement information.\n2. Call AuthV4.setup to execute the Hive SDK initialization.\n3. During the SDK initialization process, the agreement consent popup will automatically reappear.
Note

The account-based terms do not support the deletion of consent history. To choose device-based terms or account-based terms, you need to modify agreementDetermineBase in the settings.

Coppa compliance

When launching an app in the United States (U.S. territories) targeting users under 13 years old, you must comply with COPPA (Children's Online Privacy Protection Act). COPPA is a U.S. law enacted to protect the privacy of children under 13 years old. If the user is a child under 13, the app must meet all the requirements mandated by COPPA, including the examples below.

  • Authentication method only provides guest login
  • Some users cannot be exposed to tracking ads
  • Push notifications cannot be sent
  • In-app chat is prohibited
  • Inquiries to the app customer service cannot be saved
  • Personal information cannot be collected under certain conditions
Warning

For more information on COPPA compliance, please refer to COPPA. To comply with COPPA, you must check all the requirements mandated by COPPA.

Note

In a PC environment, users under the age of 13 cannot access the app when responding to COPPA. According to COPPA, users under 13 must log in with a guest account, but the Hive SDK does not support guest login in a PC environment.

Check for under 13

Hive SDK provides the AuthV4.getAgeGateU13 method to check whether the user is under 13 years old in compliance with COPPA regulations. This method must be called only after the app user has selected whether they are under 13 in the terms popup. If the user is under 13, the value returned by the method is true. Using this value, developers must comply with COPPA requirements by providing guest login only, not displaying certain ads, etc.

For example, if this value is true, the developer should only allow guest login and should not support integration with other IdP accounts such as Google accounts or Facebook accounts, and should disable account linking buttons or remove them entirely from the UI.

Using Hive Adiz or Hive Adkit automatically displays only ads that meet COPPA requirements to users when in-app ads are shown. If the developer does not use Hive Adiz or Hive Adkit, they must implement the code themselves to ensure that only in-app ads that meet COPPA requirements are displayed.

When the value of ageGateU13 is true, the behavior that changes internally in the Hive SDK is as follows.

Platform Description
Android * Does not display the More Games button when the exit popup is shown.
* Remote push is not received, and the push API does not work.
iOS * The popup asking for push permission is not displayed when calling AuthV4.setup() and Auth.initialize().
* The push API does not work.


API Reference: AuthV4.getAgeGateU13

using hive;    

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

bool bAgeGateU13 = FHiveAuthV4::GetAgeGateU13();

API Reference: AuthV4 ::getAgeGateU13

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

bool ageGateU13 = AuthV4::getAgeGateU13();

API Reference: AuthV4.getAgeGateU13

import com.hive.AuthV4;

val ageGateU13 = AuthV4.getAgeGateU13()

API Reference: AuthV4.INSTANCE.getAgeGateU13

import com.hive.AuthV4;    

boolean ageGateU13 = AuthV4.INSTANCE.getAgeGateU13();

API Reference: AuthV4Interface.getAgeGateU13

import HIVEService    

Bool ageGateU13 = AuthV4Interface.getAgeGateU13()

API Reference: HIVEAuthV4 getAgeGateU13

#import <HIVEService/HIVEService-Swift.h>    

BOOL ageGateU13 = [HIVEAuthV4 getAgeGateU13];

Gdpr compliance

App developers must comply with the GDPR (General Data Protection Regulation) if they provide goods or services to data subjects in Europe, whether they have a business presence in Europe or not.

To comply with GDPR, you need to set up GDPR terms exposure in the Hive console, and then call the Configuration.getAgeGateU16Agree() method at the point when the app user agrees to the terms.

Note

For more information on GDPR compliance, please check the official GDPR website.

Gdpr terms agreement inquiry

The Hive SDK provides the Configuration.getAgeGateU16Agree() method to return whether users under the age of 16 in GDPR-affected countries have agreed to the GDPR terms. This method must be called only after users under 16 have selected their agreement status in the terms popup. If this value is true, it means that the user under 16 has agreed to the terms; if false, it means the opposite.

When using third-party libraries to determine whether a user is under 16 years of age and to restrict app functionality accordingly, you can use the Configuration.getAgeGateU16Agree() method. For example, you can use this method to ensure that personalized ads are not provided to users who are children.

using hive;

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

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

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

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

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

BOOL ageGateU16 = [HIVEConfiguration getAgeGateU16Agree];

If the app uses the legal guardian consent terms, the app user can receive whether they have obtained legal guardian consent by calling the Configuration.getLegalGuardianConsentAgree() method. If the value is true, it means consent has been given.

using hive;    

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

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

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

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

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

BOOL legalGuardianConsentAgree = [HIVEConfiguration getLegalGuardianConsentAgree];