我使用默认的GKMatchmakerViewController进行匹配,使用以下代码
let request = GKMatchRequest()
request.defaultNumberOfPlayers = 2
let matchmakerViewController = GKMatchmakerViewController(matchRequest: request)!
matchmakerViewController.matchmakerDelegate = self
self.present(matchmakerViewController, animated: true, completion: nil)
我的手机和模拟器都在运行,并且能够找到对方并输入匹配项。我也可以使用
交换数据match.sendData(toAllPlayers: data, with: .reliable)
在我将其中一个应用程序放在后台之前,一切都很好。我能够触发此事件
public func match(_ match: GKMatch, player: GKPlayer, didChange state: GKPlayerConnectionState) {
print("player disconnected")
}
问题是在应用再次处于活动状态时重新连接用户。这永远不会被召唤。
public func match(_ match: GKMatch, shouldReinviteDisconnectedPlayer player: GKPlayer) -> Bool {
return true
}
我的比赛中有什么东西可以阻止它被调用吗?我在头文件中看到了这个
//匹配中断时调用此方法;如果返回YES,将发送新的邀请以尝试重新连接。这仅适用于1v1游戏
我的比赛不算是1v1比赛吗?如果确实如此,我应该在哪里期待新的邀请?
答案 0 :(得分:0)
根据我的经验,第一次断开匹配时不会调用shouldReinviteDisconnectedPlayer方法。它随后被称为。我不知道为什么第一次不召唤它。