2013-04-06 113 views
2

我有一个游戏中心游戏,允许玩家每回合多次移动。在iOS 6中,苹果在saveCurrentTurnWithMatchData中实现了一个很棒的功能,它可以让你做到这一点 - 它将数据保存到游戏中心,以防止作弊,例如通过反复重做移动,而不会推进到下一个玩家。有没有办法在不发送推送通知的情况下调用saveCurrentTurnWithMatchData?

的问题是,我发现,这实际上触发了同一个推送通知taht被发送当玩家确实末轮到自己。因此,游戏中的其他玩家会在应用程序图标上看到徽章,并在错误时认为它轮到他们。

有没有人找到解决方法?任何方式拨打saveCurrentTurnWithMatchData没有发送推送通知?如果没有,这似乎是一个应该引起苹果关注的设计缺陷。

回答

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 
    } 
    } 
]; 
+0

不幸的是这会给推送通知,以目前参与者已安装的游戏的任何其他设备,如注意[这里](http://stackoverflow.com/questions/9760209/是,有-A-方式对更新matchdata-IN-A-gkturnbasedmatch-不-运出哟) – sup 2013-11-13 07:28:21

相关问题