Skip to content

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。

按需接入独立 SDK 模块,按真实宿主配置原生接口。