3

我有一个游戏中心游戏,允许玩家每回合进行多次移动。在 iOS 6 中,Apple 在saveCurrentTurnWithMatchData中实现了一个很棒的功能,它允许您这样做——它将数据保存到游戏中心,以防止通过重复重做动作来防止作弊,而无需前进到下一个玩家。

问题是,我发现这实际上触发了当玩家结束回合时发送的相同推送通知。所以游戏中的其他玩家会在应用程序的图标上看到一个徽章,并错误地认为轮到他们了,而实际上并非如此。

有没有人找到解决方法?有什么方法可以在不发送推送通知的情况下调用saveCurrentTurnWithMatchData ?如果不是,这似乎是一个设计缺陷,应该引起苹果的注意。

4

1 回答 1

0

我同意,这似乎是一个设计缺陷。我还在开发一个回合制游戏,玩家可以在将控制权交给下一个玩家之前采取一些行动。同时,我希望其他玩家在观看比赛时能够见证他们的每一个动作。如果其他玩家没有运行该应用程序,我希望他们仅在将控制权传递给其他玩家时收到推送通知。

我没有使用 ,而是saveCurrentTurnWithMatchData:使用endTurnWithNextParticipants:但我指定了当前播放器而不是下一个播放器。这似乎可以解决问题:

NSTimeInterval interval = 86400; // seconds in a day
[currentMatch 
  endTurnWithNextParticipants:[[NSArray alloc] initWithObjects:currentMatch.currentParticipant,nil] 
  turnTimeout:interval matchData:[self packMatchData]
  completionHandler:^(NSError *error) {
    if (error) {
       // handle error
    }
  }
];
于 2013-08-09T22:05:12.497 回答