文章目录
SDK合规指南
1 文档修订记录
文档版本 | 文档更新日期 | 文档更新内容 |
---|---|---|
3.3.56 | 2023.05.10 | 1.新增SDK合规指南;2.可选个人信息的配置。 |
3.3.34 | 2021.12.30 | 1.「客户端回调」新增"接收实名认证信息回调" |
3.3.30 | 2021.11.18 | 1.文档从聚合SDK独立拆分出来;2.「接收实名认证信息」接口新增"scene"参数;3.「防沉迷弹窗」接口新增"scene"参数 |
2 接入准备
2.1 添加文件
将下载好的 FYBase、FYAntiAddiction 目录,拷贝到游戏工程目录中并引入
2.2 添加SDK配置
到星云平台的"对接中心->SDK对接->SDK列表->基础接入参数->SDK配置参数"下载如下的配置文件,拷贝到游戏工程目录中并引入:
- iOS SDK配置文件:FYCoreConfig.plist
说明: 「引入」是指在 Xcode 界面右键点击工程列表,选择
Add File to 'xxx'
,然后在弹出框选择你要添加的文件或文件夹,将其添加到 Xcode 工程内。 以上的文件和文件夹都需要引入到工程,并且保持在工程中只有一份,否则会引起报错
。
可选个人信息的配置。如不希望本SDK采集某信息,请将对应字段的值改为0。如允许本SDK采集某信息,请将对应字段的值改为1
(1)在FYCoreConfig.plist中添加如下配置
<key>FY_GAME_PRIVACY</key>
<string>{"basic_device_data":"0","os_version":"0"}</string>
(2)字段名称说明
OS | 个人信息类型及字段 | 用途和目的 | 是否可选 | 关闭方式 |
---|---|---|---|---|
iOS | 设备基础信息(设备型号、硬件信息、屏幕分辨率) | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 basic_device_data 字段值为"0" |
iOS | 操作系统版本 | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 os_version 字段值为"0" |
iOS | IDFA(版本3.3.56已去除) | 帮用户排查异常时使用,作为异常分析的依据 | 是 |
2.3 添加Xcode配置
1.TARGETS -> Build Settings -> Other Linker Flags -> 添加 -ObjC
2.TARGETS -> Build Settings -> Apple LLVM - Language - Objective C -> Weak References in Manual Retain Release -> YES
3.TARGETS -> Build Settings -> Enable Objective-C Exceptions -> YES
4.TARGETS -> Build Settings -> Enable Bitcode -> NO
2.4 开启调试模式
1.将 FYCoreConfig.plist 中的 FY_GAME_DEBUG 的值改为 1,即可开启「调试模式」;FY_GAME_DEBUG 改为 0,即关闭「调试模式」。
2.开启「调试模式」会显示客户端的悬浮球,点击进入调试工具可以查看接口/回调的调用信息,具体调试方法可查看文档。
2.5 引入头文件
在对接代码头部引入头文件:
# import <FYAntiAddiction/FYAntiAddiction.h>
3 界面跳转标准规范
为了您能快速接入,并避免大多数对接问题,请按照标准规范来对接。
3.1 首屏-防沉迷
3.2 游戏中-防沉迷
4 客户端接口
接口接入的要诀?
-
必接接口一定要接入,选接接口根据需要接入
-
必传参数一定要传,能传的参数尽量都传
-
所有的生命周期接口一定要接入
4.1 客户端回调
1.说明
- SDK接口在执行以后,会调用相应的回调方法,可以在回调方法中,处理相应的游戏逻辑
2.使用
- 注册以下通知,注册通知可以放在 AppDelegate.m(Unity 为UnityAppController.mm) 的
application:didFinishLaunchingWithOptions:
方法中
//注册通知:防沉迷回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fyanAntiAddictionCallback:) name:FYANAntiAddictionCallback object:nil];
//注册通知:支付限制回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fyanLimitPayCallback:) name:FYANLimitPayCallback object:nil];
//注册通知:是否到防沉迷时间回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fyanTimeOutCallback:) name:FYANTimeOutCallback object:nil];
//注册通知:接收实名认证信息回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fyanRealNameCallback:) name:FYANRealNameCallback object:nil];
- 实现注册的回调方法,回调方法可以添加在AppDelegate.m(Unity 为UnityAppController.mm) 的末尾处。
// 防沉迷回调
// 当调用 antiAddiction 接口时会将执行此回调
- (void)fyanAntiAddictionCallback:(NSNotification*)notify {
FYANResponse *resp = notify.object;
if (resp.status == FYANResponseSuccess) {
//不符合防沉迷条件
//可以正常进入游戏
//可以继续进行游戏
} else {
//符合防沉迷条件,需要限制
//禁止进入游戏
//退回到登录首页
}
}
// 支付限制回调
// 当调用 limitPay 接口将执行此回调
- (void)fyanLimitPayCallback:(NSNotification*)notify {
FYANResponse *resp = notify.object;
// 角色ID
NSString *playerId = resp.data[@"player_id"];
// 区服ID
NSString *serverId = resp.data[@"server_id"];
// 唯一用户ID
NSString *openId = resp.data[@"open_id"];
// 金额(分)
NSString *amount = resp.data[@"amount"];
// 额外参数
NSString *extra = resp.data[@"extra"];
if (resp.status == FYANResponseSuccess) {
// 此用户没有被限制支付
// 游戏继续支付流程
} else {
// 此用户被限制支付
// 游戏需结束支付流程
}
}
// 是否到防沉迷时间回调
// 当防沉迷时间到,或者调用 isTimeOut 接口将执行此回调
- (void)fyanTimeOutCallback:(NSNotification*)notify {
FYANResponse *resp = notify.object;
// 总时间
NSString *totalTime = resp.data[@"total_time"];
// 剩下时间
NSString *remainTime = resp.data[@"remain_time"];
if (resp.status == FYANResponseSuccess) {
// 到达防沉迷时间
// 游戏必须在此择机弹出防沉迷
} else {
// 未到达防沉迷时间
}
}
// 接收实名认证信息回调
// 当调用 realName 并且系统确定设置实名认证信息完成后回调
- (void)fyanRealNameCallback:(NSNotification *)notify {
FYANResponse *resp = notify.object;
if (resp.status == FYANResponseSuccess) {
// 表示设置实名认证信息已完成
// 可以继续执行后续的防沉迷逻辑(防沉迷弹窗、充值限制等)
} else {
// 设置实名认证信息失败
// 失败信息
NSString *msg = resp.message;
NSLog(@"%@", msg);
}
}
4.2 初始化 doInit
(必接)
1.说明
- 游戏需要在刚启动游戏的时候调用。
2.调用
[[FYAntiAddiction sharedInstance] doInit];
3.参数
无
4.3 接收实名认证信息 realName
(必接)
1.说明
- 此接口用来接收实名认证信息,为后续防沉迷做准备,如果此接口没有完成调用,则后续的防沉迷行为不会生效
- 若有接入聚合渠道SDK,
必须
在聚合渠道SDK的fycombineLoginCallBack
回调和fycombineRealNameCallBack
回调中调用,并将相关的实名信息传进来
2.调用
FYANRealNameInfo *info = [[FYANRealNameInfo alloc] init];
info.openId = @"xxx";
info.unionId = @"xxx";
info.identityBirthday = @"2000-01-01";
info.identityAge = @"1";
info.scene = @"1";
[[FYAntiAddiction sharedInstance] realName:info];
3.参数
参数 | 说明 | 是否必传 |
---|---|---|
unionId | 渠道维度唯一用户ID | 是 |
openId | 游戏维度唯一用户ID | 是 |
identityBirthday | 出生日期(1995-10-11) | 是 |
identityAge | 年龄 | 是 |
scene | 调用场景,"1":在登录回调中调用,"2":在实名认证回调中调用,"0":其他地方调用 | 是 |
4.回调
- 接收实名认证信息回调
fyanRealNameCallback
4.4 防沉迷弹窗 antiAddiction
(必接)
1.说明
- 调用此接口,若用户已达到防沉迷条件,则会弹出防沉迷窗口
必须
在点击"进入游戏"时调用,然后根据回调判断是否继续进入游戏必须
在fyanTimeOutCallback
回调中择机调用此接口,以在游戏中及时弹出防沉迷弹窗
2.调用
FYANAntiAddictionInfo *antiInfo = [[FYANAntiAddictionInfo alloc] init];
antiInfo.scene = @"1";
[[FYAntiAddiction sharedInstance] antiAddiction:antiInfo];
3.参数
参数 | 说明 | 是否必传 |
---|---|---|
scene | 调用场景,"1":在进入游戏时调用,"2":防沉迷时间到达时调用,"0":其他地方调用 | 是 |
4.回调
- 防沉迷回调
fyanAntiAddictionCallback
4.5 是否到防沉迷时间 isTimeOut
(非必接)
1.说明
- 调用此接口可以获取是否到防沉迷时间,以及防沉迷剩余时间
- 此接口会回调
fyanTimeOutCallback
2.调用
[[FYAntiAddiction sharedInstance] isTimeOut];
3.参数
无
4.回调
- 是否到防沉迷时间回调
fyanTimeOutCallback
4.6 限制充值 limitPay
(必接)
1.说明
- 调用此接口,若用户已达到充值限制,则会弹出充值限制窗口
必须
在点击"充值"时调用,然后根据回调判断是否继续充值- 此接口会回调
fyanLimitPayCallback
,此接口传入的所有参数会原封不动的从回调中传出
2.调用
FYANLimitPayInfo *info = [[FYANLimitPayInfo alloc] init];
info.openId = @"xxx";
info.amount = @"6000";
info.playerId = @"xxx";
info.serverId = @"1";
info.extra = @"xxx";
[[FYAntiAddiction sharedInstance] limitPay:info];
3.参数
参数 | 说明 | 是否必传 |
---|---|---|
playerId | 角色ID | 是 |
serverId | 区服ID | 是 |
openId | 游戏维度唯一用户ID | 是 |
amount | 金额(分) | 是 |
extra | 额外参数 | 否 |
4.回调
- 支付限制回调
fyanLimitPayCallback