Theo hướng dẫn của Apple cho biết; Tôi đã thực hiện giao thức GKLocalPlayerListener
trong lớp trung tâm trò chơi của tôi và thêm các cầu thủ địa phương như người nghe càng sớm càng anh ấy chứng thực: thực hiệnGiao thức GKLocalPlayerListener không được gọi là
func authenticationChanged() {
if (GKLocalPlayer.localPlayer().authenticated && !self.userAutenticated) {
println("Authentication changed: player authenticated.")
userAutenticated = true
GKLocalPlayer.localPlayer().unregisterAllListeners()
GKLocalPlayer.localPlayer().registerListener(self)
} else if (GKLocalPlayer.localPlayer().authenticated && self.userAutenticated) {
println("Authentication changed: player not authenticated.")
userAutenticated = false
}
}
Protocol:
// MARK: - GKLocalPlayerListener
func player(player: GKPlayer!, didAcceptInvite invite: GKInvite!) {
println("Did accept invite")
}
func player(player: GKPlayer!, didRequestMatchWithRecipients recipientPlayers: [AnyObject]!) {
println("Did request matchmaking")
}
Không ai trong số 2 phương pháp này nó được gọi là khi Tôi cố gắng mời một người bạn và tôi cũng không nhận được bất kỳ loại thông báo nào. Tôi đã thử kiểm tra trò chơi ở chế độ phát hành nhưng tôi đã có kết quả tương tự. Tôi phải nói rằng mai mối bình thường hoạt động chính xác, tôi có thể tìm người chơi để chơi mà không gặp bất kỳ sự cố nào.
EDIT:
Nếu tôi thử nghiệm kiểm tra nó từ 2 thiết bị, các thông báo sẽ được nhận nhưng nếu tôi gõ vào thông báo, ứng dụng sẽ được mở và không có đại biểu sẽ được gọi. Nếu tôi đóng ứng dụng và khởi động lại nó, sau đó gọi là GKLocalPlayerListener
.
Có gì sai?
Bạn có thể chỉ cần gọi 'unregisterAllListeners' nếu xác thực được thay đổi thành false. –
Không, điều đó không giải quyết được vấn đề. Người dùng được xác thực chính xác và người được ủy quyền không hoạt động –