iOS
This article guides you through setting up Supercell as an identity provider, enabling your iOS game to access Player Network authentication services.
Prerequisites
1. Get app information
Get required app information from the Supercell team.
- Create an account for Player Network Console.
- Create a new project for your game, or join an existing one.
- Download the SDK.
- Integrate the SDK.
- Add Supercell as an authentication method for your project on Player Network Console.
Step 1: Configure the SDK
After adding the iOS plugin of INTLSupercell, you can find the INTLConfig.ini file in the Xcode project. Then, add or modify the following configuration:
[Supercell]
SUPERCELL_GAME_ID = {INTL_SUPERCELL_GAME_ID}
SUPERCELL_GAME_ENVIRONMENT = {INTL_SUPERCELL_GAME_ENVIRONMENT}
SUPERCELL_IS_PRODUCTION = {IS_USING_PRODUCTION}
- Replace
{INTL_SUPERCELL_GAME_ID}
with the GAME_ID assigned by Player Network Console. - Replace
{INTL_SUPERCELL_GAME_ENVIRONMENT}
with the environment you are using, such as dev or prod. - Set
{IS_USING_PRODUCTION}
, 1 indicates a production environment, and 0 indicates any other environment.
Step 2: Add Supercell login
Add an observer to handle authentication callbacks.
- Unity
- Unreal Engine
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}
// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}
// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult ret)
{
Debug.Log($"MethodID: {ret.MethodId}");
string methodTag = "";
if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
{
methodTag = "Login";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
{
methodTag = "Bind";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
{
methodTag = "AutoLogin";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
{
methodTag = "QueryUserInfo";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
{
methodTag = "GetAuthResult";
}
}C++ Event Handling (above v1.15)
//configure callback
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
// Remove callbacks
UINTLSDKAPI::GetAuthResultObserver().Clear();void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}Unreal Event Handling
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}Call the
AutoLogin
method.- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
Call the
Login
method to ask for user input if auto-login fails.- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Supercell);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelSupercell);
Sync client authentication state with the game's backend and wait for the final authentication result.
Step 3: Test the login function
Search for the keyword "AuthResult" in the Player Network SDK logs to verify if the correct channel name and OpenID are returned. If they are, it indicates a successful configuration and the login function has been added successfully.