我有一个游戏中心游戏,允许玩家每回合进行多次移动。在iOS 6中,Apple在 saveCurrentTurnWithMatchData 中实现了一个很棒的功能,它允许你这样做 - 它将数据保存到游戏中心,以防止通过反复重做移动来作弊,而无需前进到下一个玩家
问题是,我发现当玩家 结束轮次时,这实际上会触发相同的推送通知。所以游戏中的其他玩家会在应用程序的图标上看到一个徽章,如果没有,则会错误地认为轮到他们了。
有没有人为此找到解决方法?是否可以在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData ?如果没有,这似乎是一个设计缺陷,应该引起Apple的注意。
答案 0 :(得分: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
}
}
];