onGetLegacyUserIdentity
获取APP原用户身份标识
该方法用于新版本游戏包获取原APP用户身份标识。主要用途是:新版本游戏启动时,原APP用户登录成功后,游戏需要获取原APP用户身份标识,用于后续游戏数据同步。
方法声明
java
/**
* 当 SDK 请求获取旧版用户身份标识(Legacy User Identity)时触发。
* 通常用于兼容旧版本系统或迁移存量用户数据。
*
* @param handle 用于向 SDK 返回处理结果的状态句柄。
* @param dataJson 包含请求参数或上下文信息的 JSON 字符串。
*/
void onGetLegacyUserIdentity(SUDOPStateHandle handle, String dataJson);运行行为
- 触发时机:当小游戏加载并尝试恢复用户的历史存档、战绩或道具,但发现当前登录体系与历史数据不匹配时,引擎会发起此请求。
- 参数解析:
dataJson字段包含了游戏侧提供的上下文(如游戏内部的旧 ID 或特定的迁移标识符)。 - 异步反馈:App 接收到请求后,通过查询本地数据库或服务端接口找到对应的旧版标识,并利用
handle.success(json)异步推回。
代码示例
实现旧版 ID 的查找与回传逻辑:
java
@Override
public void onGetLegacyUserIdentity(SUDOPStateHandle handle, String dataJson) {
try {
// 1. 解析请求参数(如果需要)
JSONObject request = new JSONObject(dataJson);
String userId = request.optString("userId");
// 2. 模拟从 App 数据库获取该用户对应的旧版标识
// 例如:旧系统使用的是 MD5 后的设备 ID 或自定义的原始 ID
String legacyId = MyUserCenter.getLegacyIdByUserId(userId);
// 3. 构造返回的 JSON
JSONObject result = new JSONObject();
result.put("legacyUserId", legacyId);
// 4. 通过 handle 异步返回成功
handle.success(result.toString());
} catch (Exception e) {
// 如果发生错误,返回失败状态
handle.fail(SUDOP.ERR_UNKNOWN);
}
}注意事项
- 兼容性保障:如果您的 App 是首次接入 Sud SDK 且没有历史遗留数据,可以在此方法中直接返回
handle.success("{}")或当前的userId。 - 非阻塞调用:由于涉及到身份查询,可能存在网络耗时。必须使用
handle对象进行异步响应,严禁在回调方法内进行同步耗时操作。 - 安全性:仅返回协议要求的标识符,不要在此接口中透传任何明文密码或敏感隐私信息。