iOS
From Spring 2024, developers will have to clearly describe data use in the privacy manifest, showing how required reason APIs will be utilized in apps that are updated or uploaded to Apple App Store Connect. For more information, see Upcoming third-party SDK requirements.
As DMM has yet to publish their privacy manifest, such content is not available in the Player Network SDK privacy manifest, see iOS 17 Privacy Manifest for more information.
This article guides you through setting up DMM as an identity provider, enabling your iOS game to access Player Network authentication services.
Prerequisites
1. Set up the DMM app
Contact DMM tech support to obtain a developer account with relevant permissions and app parameters.
Required app parameters:
- App ID
- Secret key
- Consumer key
- Consumer secret
- Authentication client ID
- Authentication client secret
- 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 DMM as an authentication method for your project on Player Network Console.
Step 1: Configure the SDK
DMM SDK is only compatible with iOS SDK 11 and above.
Unreal Engine should first find the bundle resource path in the Plugins/INTLSDK/Source/INTLCore/INTLCore.Build.cs
file:
AdditionalBundleResources.Add(new BundleResource(Path.Combine(ModuleDirectory, "Libs/iOS/INTLCore/INTLSDK.bundle"), bShouldLog: false));
Open the project's INTLConfig.ini:
[DMM Channel Configuration]
DMM_DEVELOP_MODE = {INTL_DMM_DEVELOP_MODE}
DMM_APP_ID = {INTL_DMM_APP_ID}
DMM_CONSUMER_KEY = {INTL_DMM_CONSUMER_KEY}
DMM_CONSUMER_SECRET = {INTL_DMM_CONSUMER_SECRET}
DMM_AUTHENTICATION_CLIENT_ID = NONE
DMM_AUTHENTICATION_CLIENT_SECRET = NONE
DMM_GET_VALIDATE_CODE_PATH = /v2/auth/get_dmm_verify_code
DMM_REDIRECT_URL = {INTL_DMM_REDIRECT_URL}
DMM_SECRET_KEY = NONE
- Replace
{INTL_DMM_DEVELOP_MODE}
with sandbox and production. Sandbox is the debug environment, and production is the production environment. - Replace
{INTL_DMM_APP_ID}
with the DMM App ID of the game. - Replace
{INTL_DMM_CONSUMER_KEY}
with the DMM Consumer Key of the game. - Replace
{INTL_DMM_CONSUMER_SECRET}
with the DMM Consumer Secret of the game. - The setting rules for the
{INTL_DMM_REDIRECT_URL}
value are as follows:- Delete all periods in the software package name. For example, the package name
com.INTL.game
becomes the stringcomINTLgame
. - The string obtained by the above rule is changed from uppercase to lowercase. For example, in the above example, the string becomes
comintlgame
. - Then,
://auth
is added at the end, for example,comintlgame://auth
.
- Delete all periods in the software package name. For example, the package name
Step 2: Add DMM 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.DMM);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelDMM);
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.