Skip to content

onGetUserProfile:dataJson

获取用户敏感信息

该方法用于获取原APP用户敏感信息。主要用途是:为游戏提供APP敏感用户信息。


方法声明

objectivec
/**
 * 当 SDK 请求获取用户敏感信息(User Profile)时触发。
 * 通常涉及比基本信息更详细的字段,如性别、地区、实名状态等。
 *
 * @param stateHandle 用于向 SDK 返回处理结果的状态句柄。
 * @param dataJson 包含请求参数(如用户 ID 及需要的详细属性列表)的 JSON 字符串。
 */
- (void)onGetUserProfile:(id<SUDOPStateHandle>)stateHandle dataJson:(NSString*)dataJson;

运行行为

  • 按需触发:当玩家在游戏内点击查看详细个人名片、或者游戏需要根据性别分配初始角色/皮肤、判断是否为 VIP 玩家时,引擎会发起此请求。
  • 精准字段请求dataJson 中通常会指定具体的 userId 以及游戏感兴趣的字段列表(例如 ["gender", "region", "vip_level"])。
  • 异步组装:由于详细资料可能分布在不同的业务系统(如会员系统、地理位置服务),App 可以在收集完所有数据后,通过 [stateHandle success:] 统一回传。
  • 隐私过滤:App 侧可以在此方法内实现隐私逻辑。例如,若用户开启了“隐藏地理位置”,App 可以选择不返回 region 字段或返回脱敏后的数据。

代码示例 (Objective-C)

实现详细资料的按需组装与回传:

objectivec
- (void)onGetUserProfile:(id<SUDOPStateHandle>)stateHandle dataJson:(NSString*)dataJson {

    NSDictionary *profile = @{
        @"gender": @"female",
        @"region": @"Beijing, China",
    };
    
    // 3. 将结果转为 JSON 字符串
    NSData *resultData = [NSJSONSerialization dataWithJSONObject:profile options:0 error:nil];
    NSString *resultJson = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
    
    // 4. 通过 stateHandle 异步回传成功结果
    [stateHandle success:resultJson];
}

注意事项

  • 字段契约:除了 SUDOP 预定义的标准 Key 之外,如果游戏有特定的扩展字段需求(如:战斗力、公会名称),请确保 App 侧返回的 JSON Key 与游戏侧约定的名称严格一致。
  • 非强制性实现:如果您的游戏仅需要头像和昵称,可能永远不会触发此回调。但为了协议的完整性,建议即使不返回数据也调用一次 [stateHandle success:@"{}"]
  • 错误处理:如果用户不存在或数据获取失败,应调用 [stateHandle fail:SUDOP_ERR_UNKNOWN](或对应的错误码),避免游戏侧无限期等待。