传入的 GameCenter 邀请不包含任何玩家
Incoming GameCenter invite contains no players
我正在尝试让我的游戏允许 1 台设备 (iPhone) 使用 GameCenter 邀请朋友玩游戏 (iPad)。我正在使用 standard/default MatchMaker 界面。 iPhone 将邀请发送给 iPad,iPad 显示通知。
当我按下这个通知时,iPad 的‘player(GKPlayer, didAccept: GKInvite)’例程确实被调用了。
@objc func player(_ playerMe: GKPlayer, didAccept invite: GKInvite) {
print("\n\n\t\tplayer \(playerMe.displayName)(\(playerMe.playerID)) did accept INVITE sent by \(invite.sender.displayName)(\(invite.sender.playerID))")
GKMatchmaker.shared().match(for: invite, completionHandler: {(InvitedMatch, error) in
print("\t\tplayers.count = \(InvitedMatch!.players.count)")
if error != nil {
print("INVITE ERROR: \(error.debugDescription)")
}
if InvitedMatch != nil {
print("\t\tSetting current match. (\(InvitedMatch.debugDescription))")
self.currentMatch = InvitedMatch
self.currentMatch?.delegate = self
// self.prepareMatch()
}
})
}
输出:
player Me(G:25139341913) did accept INVITE sent by “-----”(G:12453976)
players.count = 0
Setting current match. (Optional(<GKMatch 0x282d39970 expected count: 1 seqnum: 0
G:12453976:unknown
reinvitedPlayers:(
)>))
玩家数组为空!至少邀请人不应该在里面吗? “expectedPlayerCount”正确反映了 2 人匹配请求,其中 1 名玩家(邀请者)已经是参与者)
任何一方都没有调用“player(GKPlayer, didRequestMatchWithRecipients: [GKPlayer])”。
所以 iPad 无法访问玩家来设置比赛,但 iPhone 看到邀请已被接受,有 2 名玩家,并继续前进。 iPhone代码:
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) {
print("\n\n\t\tMATCH FOUND\n\n")
viewController.dismiss(animated: true, completion: nil)
GKMatchmaker.shared().stopBrowsingForNearbyPlayers()
currentMatch = match
match.delegate = self
if Globals.gameState?.currentState is StateWaitingForMatch {
if currentMatch?.expectedPlayerCount == 0 {
prepareMatch()
}
}
}
那么如何让 iPad(邀请的接收者)给 see/include 玩家?
在player(GKPlayer, invite: GKInvite)方法中通过
创建一个GKMatchMakerViewController
let mmvc = GKMatchmakerViewController(邀请:邀请!)
然后出示:
viewController.present(mmvc!, 动画: true, 完成: nil)
我正在尝试让我的游戏允许 1 台设备 (iPhone) 使用 GameCenter 邀请朋友玩游戏 (iPad)。我正在使用 standard/default MatchMaker 界面。 iPhone 将邀请发送给 iPad,iPad 显示通知。
当我按下这个通知时,iPad 的‘player(GKPlayer, didAccept: GKInvite)’例程确实被调用了。
@objc func player(_ playerMe: GKPlayer, didAccept invite: GKInvite) {
print("\n\n\t\tplayer \(playerMe.displayName)(\(playerMe.playerID)) did accept INVITE sent by \(invite.sender.displayName)(\(invite.sender.playerID))")
GKMatchmaker.shared().match(for: invite, completionHandler: {(InvitedMatch, error) in
print("\t\tplayers.count = \(InvitedMatch!.players.count)")
if error != nil {
print("INVITE ERROR: \(error.debugDescription)")
}
if InvitedMatch != nil {
print("\t\tSetting current match. (\(InvitedMatch.debugDescription))")
self.currentMatch = InvitedMatch
self.currentMatch?.delegate = self
// self.prepareMatch()
}
})
}
输出:
player Me(G:25139341913) did accept INVITE sent by “-----”(G:12453976)
players.count = 0
Setting current match. (Optional(<GKMatch 0x282d39970 expected count: 1 seqnum: 0
G:12453976:unknown
reinvitedPlayers:(
)>))
玩家数组为空!至少邀请人不应该在里面吗? “expectedPlayerCount”正确反映了 2 人匹配请求,其中 1 名玩家(邀请者)已经是参与者)
任何一方都没有调用“player(GKPlayer, didRequestMatchWithRecipients: [GKPlayer])”。
所以 iPad 无法访问玩家来设置比赛,但 iPhone 看到邀请已被接受,有 2 名玩家,并继续前进。 iPhone代码:
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) {
print("\n\n\t\tMATCH FOUND\n\n")
viewController.dismiss(animated: true, completion: nil)
GKMatchmaker.shared().stopBrowsingForNearbyPlayers()
currentMatch = match
match.delegate = self
if Globals.gameState?.currentState is StateWaitingForMatch {
if currentMatch?.expectedPlayerCount == 0 {
prepareMatch()
}
}
}
那么如何让 iPad(邀请的接收者)给 see/include 玩家?
在player(GKPlayer, invite: GKInvite)方法中通过
创建一个GKMatchMakerViewControllerlet mmvc = GKMatchmakerViewController(邀请:邀请!)
然后出示:
viewController.present(mmvc!, 动画: true, 完成: nil)