iOS
从 2024 年春季开始,对于需更新或上传至 Apple App Store Connect 的应用,开发者需明确 注明使用原因,以展示该应用如何使用 required reason API(需提交使用原因的 API)。更多信息,请参见 即将发布的第三方 SDK 要求。
由于 VNG 的隐私清单尚未公布,目前 Player Network SDK 隐私清单中不包含对应的内容,详见 iOS 17 隐私清单。
本文旨在介绍如何设置 VNG 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 VNG 渠道登录。
前提条件
1. 设置 VNG 应用
联系 VNG 以应用以下应用程序配置参数。
- VNG 游戏 ID
- appsFlyerDevKey (如果您已从 VNG 申请了 AppsFlyer)
步骤1:为 VNG 登录配置 SDK
iOS: iOS 9.0 或更高版本
在目标项目的 Linking > Other Linker Flags 中添加 -ObjC
键
有关 Bitcode 的更多信息,请参见 BitCode configuration。
步骤2:添加 VNG 登录
注册登录相关回调。
- 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);
}调用
AutoLogin
接口自动登录。如果用户以前登录过,则可以调用
AutoLogin
界面。如果令牌在有效期内仍然有效,则登录成功。如果令牌失效,则会出现错误提示,游戏需要调用手动登录界面重新登录。- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
在自动登录失败时调用
Login
接口使玩家手动登录。- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.VNG, "", "");
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelVNG);
调用 API 后,将出现以下窗口:
登录后返回的参数是
{
"extraJson":"
{
}",
"methodID":102,
"retCode":0,
"retMsg":"Success",
"ret":0,
"msg":"success",
"bind_list":"",
"birthday":"",
"channel":"VNG",
"channel_info":"
{
\"email\":\"null\",
\"expire_ts\":1660373805,
\"session_id\":\"MTSVN_23195b047d99a2b164296ab85cb956fa76e631657781803922\",
\"social_id\":\"646605735\",
\"update_in\":1657781803520,
\"user_id\":\"2213855217680687104\",
\"user_name\":\"mtschecking02\"
}",
"channelid":38,
"confirm_code":"",
"confirm_code_expireTime":0,
"del_account_status":-10,
"first_login":0,
"gender":0,
"legal_doc":"",
"openid":"824624458301451",
"pf":"unknown_uk-00000000-android-00000000-uk-MTSVN-824624458301451",
"pf_key":"4c5a49c1407cfe7ab09fba44e343810e",
"picture_url":"",
"need_name_auth":false,
"token":"bd13b7147297a5c58c27f414ea21ae00f67f2208",
"token_expire_time":1660373805,
"user_name":"mtschecking02"
}警告user_id 是当前用户的唯一标识,请在客户服务界面使用。
与游戏后台同步客户端身份验证状态,等待最终验证结果。
登出
用户可以注销当前登录渠道。他们需要调用接口 Logout
并传递相关参数。
- Unity
- Unreal Engine
INTLAPI.Logout();
UINTLSDKAPI::Logout();
步骤3:验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。
其他功能
绑定
用户可以绑定已登录的 VNG 和其他渠道,如同步数据等操作。用户可以调用 Bind
接口并传递相关参数。
使用 Facebook 作为示例:
- Unity
- Unreal Engine
INTLAPI.Bind(INTLChannel.Facebook);
UINTLSDKAPI::Bind(EINTLLoginChannel::kChannelFacebook);
更多信息,请参见 Unity SDK 或 Unreal Engine SDK 的 Bind
接口。
VNG 客户服务
VNG 提供客户服务,并通过 Player Network SDK 中的扩展提供支持。回调函数为:
- Unity
- Unreal Engine
string json="{\"user_id\":\"xxx\",\"login_type\":\"ZM\"}";;
INTLAPI.ExtendInvoke(INTLChannel.VNG, "showCustomerSupport",json);
FString json="{ \"user_id\":\"xxx\",\"login_type\":\"ZM\"}";;
UINTLSDKAPI::ExtendInvoke(EINTLLoginChannel::kChannelVNG, "showCustomerSupport",json);
JSON 中的内容包括以下字段,用户可根据需要填写:
名称 | 字段 | 说明 | 备注 |
---|---|---|---|
user_id | string | 登录用户 ID | 需要 |
login_type | string | 用户登录类型 | 需要 (zing 对应: "zm") |
role_name | string | 角色名称 | 可选 |
level | string | 角色级别 | 可选 |
guild | string | 角色所属组别 | 可选 |
content | string | 角色 ID | 可选 |
server_id | string | 服务器 ID | 可选 |
登录渠道 | 登录类型 |
---|---|
Guest | GU |
FB | |
GG | |
ZingID | ZM |
LINE | LINE |
AppleID | AP |
EM | |
Zalo | ZL |
VNG ID | CM |
调用后将出现以下界面:
关闭页面时将返回以下参数:
{
"extraJson":"
{
}",
"methodID":1301,
"retCode":0,
"retMsg":"Success",
"ret":0,
"msg":"",
"channel":"VNG",
"extend_method_name":"showCustomerSupport"
}