Swift 5.x iOS14 GameKit匹配出现Peer does not exist错误如何解决?
问题原因及修复方案
核心问题
- 未持有
GKMatch实例,实例被自动释放后导致GameKit无法识别对等节点,触发Peer does not exist报错 - 收到邀请接受的回调后,没有调用
GKMatchmaker的匹配方法完成连接流程 - 未实现
GKMatchDelegate的连接状态监听方法,无法判断对等节点是否完成接入 - 匹配成功后未等待所有玩家连接完成就直接进入后续流程,此时对等节点还未完成注册
修复步骤
1. 新增属性持有匹配实例
在SimpleViewController中新增属性,避免匹配对象被释放:
class SimpleViewController: UIViewController { let minPlayers = 2 let maxPlayers = 4 // 新增以下两个属性 var currentMatch: GKMatch? var expectedPlayerCount: Int = 0 // 原有viewDidLoad代码保持不变 override func viewDidLoad() { super.viewDidLoad() // 原有逻辑不变 ... } }
2. 完善邀请接受回调
修改player(_:didAccept:)方法,收到邀请后主动发起匹配:
func player(_ player: GKPlayer, didAccept invite: GKInvite) { self.dismiss(animated: true, completion: { GKMatchmaker.shared().match(for: invite) { [weak self] match, error in guard let self = self, let match = match, error == nil else { print("邀请匹配失败: \(error?.localizedDescription ?? "未知错误")") return } self.currentMatch = match match.delegate = self self.expectedPlayerCount = self.minPlayers - match.players.count } }) }
3. 修改匹配成功回调
不要在匹配找到后直接进入游戏,先等待所有玩家接入:
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) { self.dismiss(animated: true) currentMatch = match match.delegate = self expectedPlayerCount = minPlayers - match.players.count print("找到匹配,等待剩余\(expectedPlayerCount)个玩家接入") }
4. 实现GKMatchDelegate的连接状态回调
在扩展中新增连接状态监听方法,所有玩家连接完成后再启动游戏逻辑:
func match(_ match: GKMatch, player: GKPlayer, didChange state: GKPlayerConnectionState) { switch state { case .connected: expectedPlayerCount -= 1 if expectedPlayerCount == 0 { // 所有玩家接入完成,此处调用你的游戏启动逻辑 print("所有玩家已连接,游戏开始") } case .disconnected: print("玩家\(player.displayName)断开连接") // 按需补充断线重连或结束游戏逻辑 default: break } } func match(_ match: GKMatch, didFailWithError error: Error?) { print("匹配出错: \(error?.localizedDescription ?? "未知错误")") }
附加配置检查
- 两台测试设备使用的Game Center账号必须都已加入App Store Connect的沙盒测试账号列表
- 项目配置中已添加Game Center能力
- 测试包的Bundle ID与App Store Connect中注册的App ID完全一致
内容的提问来源于stack exchange,提问作者user3069232
相关产品推荐
相关产品推荐

