【问题标题】:Is there any way to call saveCurrentTurnWithMatchData without sending a push notification?有没有办法在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData?
【发布时间】:2013-04-06 05:53:41
【问题描述】:

我有一个 Game Center 游戏,允许玩家每回合进行多次移动。在 iOS 6 中,Apple 在 saveCurrentTurnWithMatchData 中实现了一项很棒的功能,让您可以做到这一点 - 它将数据保存到游戏中心以防止作弊,例如通过重复重做动作,而不会前进到下一个玩家.

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

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

【问题讨论】:

标签: ios apple-push-notifications gamekit


【解决方案1】:

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

我没有使用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
    }
  }
];

【讨论】:

  • 不幸的是,这将向当前参与者安装了游戏的任何其他设备发送推送通知,如 here 所述
猜你喜欢
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多