GameCenter didAcceptInvite 未调用
GameCenter didAcceptInvite not called
我正在使用 iOS GameCenter 开发一款回合制游戏。我使用默认的 GKTurnBasedMatchmakerViewController
进行匹配和邀请。但是,在发送和接受邀请后,不会调用 player:didAcceptInvite:
方法。我预计这个方法会在其他玩家接受本地玩家的邀请后被调用。
所以我的问题是:
1) 如何触发player:didAcceptInvite:
?
2) 如果邀请被拒绝,如何通知本地玩家?
我的目标是 iOS 7+ 并使用两个真实设备进行测试。
本地播放器鉴权后会调用如下方法:
-(void)onPlayerAuthenticationChanged
{
if ([GKLocalPlayer localPlayer].isAuthenticated)
{
if (!self.isLocalPlayerAuthenticated)
{
[[GKLocalPlayer localPlayer] registerListener:self];
self.isLocalPlayerAuthenticated = YES;
}
}
//…
}
GC 单例符合 GKLocalPlayerListener
协议,其中包括 GKInviteEventListener
,因此 player:didAcceptInvite:
。我的实现看起来与 iOS 7: How to setup invitation handler for Game Center matchmaker.
中建议的解决方案大致相同
虽然文档没有说明这一点,但我通过实验了解到 didAcceptInvite
仅在实时匹配时触发。它不会在回合制比赛中触发。目前尚不清楚这是设计使然(并且文档有误)还是已损坏。我有一个与 Apple 有关的未解决的错误。
但是,作为替代方案,receivedTurnEventForMatch
会在受邀玩家开始游戏时触发。如果其他玩家接受邀请后您需要做些什么,请尝试将其放入 receivedTurnEventForMatch
我正在使用 iOS GameCenter 开发一款回合制游戏。我使用默认的 GKTurnBasedMatchmakerViewController
进行匹配和邀请。但是,在发送和接受邀请后,不会调用 player:didAcceptInvite:
方法。我预计这个方法会在其他玩家接受本地玩家的邀请后被调用。
所以我的问题是:
1) 如何触发player:didAcceptInvite:
?
2) 如果邀请被拒绝,如何通知本地玩家?
我的目标是 iOS 7+ 并使用两个真实设备进行测试。
本地播放器鉴权后会调用如下方法:
-(void)onPlayerAuthenticationChanged
{
if ([GKLocalPlayer localPlayer].isAuthenticated)
{
if (!self.isLocalPlayerAuthenticated)
{
[[GKLocalPlayer localPlayer] registerListener:self];
self.isLocalPlayerAuthenticated = YES;
}
}
//…
}
GC 单例符合 GKLocalPlayerListener
协议,其中包括 GKInviteEventListener
,因此 player:didAcceptInvite:
。我的实现看起来与 iOS 7: How to setup invitation handler for Game Center matchmaker.
虽然文档没有说明这一点,但我通过实验了解到 didAcceptInvite
仅在实时匹配时触发。它不会在回合制比赛中触发。目前尚不清楚这是设计使然(并且文档有误)还是已损坏。我有一个与 Apple 有关的未解决的错误。
但是,作为替代方案,receivedTurnEventForMatch
会在受邀玩家开始游戏时触发。如果其他玩家接受邀请后您需要做些什么,请尝试将其放入 receivedTurnEventForMatch