iOS — Game Center 成就(ROAchievementGameCenter)
模块目录:Modules/ROAchievementGameCenter。基于 GameKit,独立于 Apple 登录及支付模块。
原生宿主调用
objc
[[ROAchievementGameCenter shared] authenticateFromController:presenter
completion:^(BOOL success, NSError *error) {
// 登录未完成时不要上报成就。
}];
[[ROAchievementGameCenter shared] reportAchievement:@"achievement.first_win"
percent:100 completion:^(BOOL success, NSError *error) {
// 将真实 SDK 回调映射到已有游戏协议。
}];
[[ROAchievementGameCenter shared] showAchievementsFromController:presenter
completion:^(BOOL success, NSError *error) {}];宿主配置
在真实游戏的 App Store Connect 设置成就 ID,在实际 App target 开启 Game Center Capability,使用具备授权的 Game Center 测试玩家与签名真机。宿主应处理玩家取消、前后台恢复、重复成就提交、用户切换与系统页面关闭。
完整公开 API / 可选调用方式
| ObjC 接口 | 用途 |
|---|---|
[ROAchievementGameCenter shared] | 获取原生 Game Center 模块 |
authenticateFromController:completion: | 按需认证 Game Center 玩家;不等于 Apple 登录 |
reportAchievement:percent:completion: | 按指定成就 ID 上报百分比进度(例如 100 为完成) |
showAchievementsFromController:completion: | 弹出系统成就页 |
ROGameCenterCompletion(success,error) | 各原生操作结果;业务奖励结算需游戏后端处理 |
objc
ROAchievementGameCenter *center = [ROAchievementGameCenter shared];
[center authenticateFromController:presenter
completion:^(BOOL success, NSError *error) {
if (success) {
[center reportAchievement:@"game.complete.chapter1" percent:100
completion:^(BOOL reported, NSError *e) {}];
}
}];
[center showAchievementsFromController:presenter
completion:^(BOOL opened, NSError *error) {
// opened 不代表玩家已完成成就或领取游戏服务器奖励。
}];需要实际配置 Game Center Capability、App Store Connect 成就 ID、用户授权和前台控制器。无模块时无需在宿主引入 GameKit。
首版前 API 与结果回调核验(2026-10-28)
authenticateFromController:completion: 回报 Game Center 本地认证与错误;reportAchievement:percent:completion: 回报原生成就上报结果;showAchievementsFromController:completion: 在原生 Game Center 页关闭后回报 UI 完成,不代表有新的成就解锁或游戏奖励发放。不存在与游戏账号绑定的隐式登录步骤,宿主仍需处理业务奖励。无必要新增复杂初始化器或通用 Adapter。