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