问题标签 [gkturnbasedmatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Game Center 回合制配对问题
所以我正在开发一个基于回合的游戏,利用游戏中心。我已经弄清楚了大部分来龙去脉。但是,当玩家从比赛中退出时,GameCenter 会自动尝试用搜索比赛的玩家来填补该玩家位置。我不希望这种行为发生,也无法终生找到禁用它的方法。
注意:我意识到我可能不清楚我希望应用程序如何执行,所以这是我希望在有人辞职的情况下游戏遵循的流程。
比赛已满员 > 球员辞职,他们的棋子从比赛中移除 > 已经参加比赛的人继续比赛,不允许新的参与者加入比赛中期。
如果有人对这个问题有任何见解,我将不胜感激。
提前致谢!
ios - GameKit 错误表示玩家未通过身份验证,但 .authenticated 属性 = true
我在 iOS 中有一个使用 GameKit 的回合制游戏。通常,我的 Game Center 身份验证有效。我的游戏有效,我可以在一段时间内来回发送动作。但是,当我尝试在 Game Center 上执行某个操作(例如,寻找新的比赛)时,相对频繁但并非经常发生,它会失败并出现以下错误:
Error Domain=GKErrorDomain Code=6 “请求的操作无法完成,因为本地播放器尚未通过身份验证。” UserInfo={NSLocalizedDescription=请求的操作无法完成,因为本地播放器尚未通过身份验证。}
然而,GKLocalPlayer.localPlayer().authenticated = true,无论是在收到错误之前还是之后。收到此错误后,不会显示身份验证视图控制器,并且依赖身份验证的 GameKit 方法停止运行(它们不会恢复活力)。然后,如果我将应用程序发送到后台,然后将其带回前台,则当我重试该操作时错误不会返回(无需输入新的登录名和密码)。
根据这个类似的观察:
GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(游戏中心沙盒)
“1.如果您的设备日期不正确,Game Center将无法完成认证。所以,请继续检查当前日期。
- 你可能已经这样做了。我相信你 - iOS 模拟器 >> 重置内容和设置”
我在设备上遇到了这个问题,而不是在模拟器上,排除了#2。有人可以帮我解决#1吗?我在这里可能很天真,但我的 iPhone 和 iPad 有正确的时间和日期。我应该检查和设置什么或其他地方吗?
那么,如果这不是问题,那还有什么问题呢?我正在运行iOS9。
ios - 将 Game Center 回合制多人游戏添加到现有捆绑包 ID
我正在尝试将 TBM 添加到已经在 App Store 上发布了几个版本的应用程序(包括游戏中心排行榜)。
首先,我首先在 iTunes Connect 上创建了一个新的测试应用程序,并实现了我需要的所有基本方法;一切都很顺利。然后我开始将框架集成到我的实时应用程序中。它有点工作,但它有一些问题。最明显的:
- receivedTurnEventForMatch 永远不会触发
- 从未收到游戏中心通知
长话短说:我回到了我的测试项目,用来自实时应用程序的那个替换了 bundle id,这样它就有了完全相同的问题。当然,此应用程序启用了 Game Center,并且排行榜按预期工作。
关于可能是什么问题的任何想法?将 GC 功能扩展到现有应用程序时是否需要特别注意?
ios - Game Center 新比赛邀请自动被邀请者立即拒绝
我有一个使用 GKTurnBasedMatch 的 Game Center/GameKit iOS 应用程序(Swift2 iOS9)。我只遇到了一部分在线 GC 朋友的问题,与他们的新匹配立即被拒绝。这不是由朋友完成的,而是以某种方式自动发生的。与其他朋友一起,比赛被接收并继续正常。
Game Center 会自动拒绝新比赛的条件是什么(适当的和腐败的)?
ios - GKTurnBasedMatch 不前进到下一个玩家
所以我的比赛有两名球员。当玩家 1 创建一个新匹配时,我使用endTurnWithNextParticipants
方法并为 nextParticipants 提供 GKTurnBasedMatch 的参与者数组属性,该属性有两个参与者。
但是在播放器 1 设备上,它一直说轮到你了。玩家 2 的设备上显示“轮到他们了”。
有什么建议么?
编辑:
这是我使用的方式endTurnWithNextParticipants
。currentTurnBasedMatch
是 GKTurnBasedMatch 的一个实例。我确实验证了该实例确实包含两个参与者(玩家 1 和 2)正确。并且完成没有任何错误。
ios - Gamecenter ios 9 GameCenter GKLocalPlayerListener 方法未调用
这是关于GameCenter
。
由于“GKLocalPlayerListener
协议继承了GKChallengeListener
,GKInviteEventListener
和GKTurnBasedEventListener
.
为了处理多个事件”和“不要直接实现GKChallengeListener
, GKInviteEventListener
, 和GKTurnBasedEventListener
;GKLocalPlayerListener
改为实施。
您可以使用 " 侦听和处理多个事件GKLocalPlayerListener
(这些来自苹果文档)。
人们会期望,在注册GKLocalPlayerListener
之后,在经过身份验证之后,当适当的事件发生时,将调用GKLocalPlayer.localPlayer()
中的所有方法。GKLocalPlayerListener
但是,除了调用“player(player: GKPlayer
, receivedTurnEventForMatch match: GKTurnBasedMatch
, didBecomeActive: Bool)”之外,其他所有方法,包括“player(player: GKPlayer
, matchEnded match: GKTurnBasedMatch
)”,在此类事件发生时都不会被调用。
我们需要注册其他听众还是我缺少什么?
ios - receivedTurnEventForMatch 未能触发
我正在用 Swift 开发一个基于回合的游戏。游戏使用 GKLocalPlayerListener 来了解其他人何时轮到他们。当用户从标准 GameCenter 屏幕选择比赛时,该方法player(player: GKPlayer, receivedTurnEventForMatch match: GKTurnBasedMatch, didBecomeActive: Bool)
会触发,但当他们已经在比赛中并且其他人这样做时,该方法不会触发,直到他们回到 GameCenter 并再次选择相同的比赛。它应该还是我应该投票?
编辑:我也没有收到比赛请求等的推送通知,但它们确实出现在 GameCenter 和我的应用程序中
ios - 如何回复 GKTurnBasedExchange?GKLocalPlayerListener 委托 receivedExchangeReplies 被间歇性调用
有一些帖子讨论了 Game Center 的推送通知在沙盒中是如何相当不可靠的。但是,沙盒被 iOS 9 混淆了,所以我不确定为什么我的 Game Center 推送通知如此不可靠。
当我回复活跃的交易所时,发件人很少收到通知。
在发件人设备上,如果我刷新匹配数据,我会看到待处理的回复。如果我处理回复,一切正常。
这种方法也是如此:
在这一点上,我认为我最好的选择是运行我自己的推送通知逻辑来触发更新匹配数据。那或者我已经读过发送提醒更可靠,尽管我相信这有限制。
更新
我试过只使用设备而不是模拟器。同样的问题。看起来这是一个众所周知的问题。本书第 766 页甚至对此进行了说明。
更新
发送提醒没有帮助。
更新
通常在回复交换时,我会从 GameKit 收到此错误。
ios - 最新比赛数据游戏中心
因为我正在使用游戏中心进行回合制游戏。一切正常,例如将轮到下一个玩家,跳过轮,退出比赛等等。唯一的问题是,除非用户没有点击通过 Game Center 发送的通知,否则我无法获得最新的比赛数据。假设有人向我发送了一些数据,我收到了通知,但用户没有点击通知。在这种情况下,用户没有获得最新的匹配或匹配数据。请为此提供一些解决方案。
提前致谢!