有没有办法在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData?
Posted
技术标签:
【中文标题】有没有办法在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData?【英文标题】:Is there any way to call saveCurrentTurnWithMatchData without sending a push notification? 【发布时间】:2013-04-06 05:53:41 【问题描述】:我有一个 Game Center 游戏,允许玩家每回合进行多次移动。在 ios 6 中,Apple 在 saveCurrentTurnWithMatchData 中实现了一项很棒的功能,让您可以做到这一点 - 它将数据保存到游戏中心以防止作弊,例如通过重复重做动作,而不会前进到下一个玩家.
问题是,我发现当玩家确实结束他们的回合时,这实际上触发了相同的推送通知。所以游戏中的其他玩家会在应用图标上看到一个徽章,并错误地认为该轮到他们了。
有没有人找到解决方法?有什么方法可以在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData?如果不是,这似乎是一个设计缺陷,应该引起 Apple 的注意。
【问题讨论】:
Is there a way to update matchData in a GKTurnBasedMatch without sending out "Your Turn" push notifications?的可能重复 【参考方案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 所述以上是关于有没有办法在不发送推送通知的情况下调用 saveCurrentTurnWithMatchData?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin - 如何在不使用其他服务的情况下发送推送通知
是否可以在不构建任何应用程序的情况下向 Android 发送推送通知?