问题标签 [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.
gkturnbasedmatch - GKTurnBasedMatch detect invitation
I have a view that lists all available matches for a local player (which was registered as the listener). The problem I have is that I want my list to update when the player receives an invitation for a new match.
I tried implementing:
But those methods never get called.
I do get notification of other events, such as turnBasedMatchmakerViewController(_ viewController: GKTurnBasedMatchmakerViewController, didFind match: GKTurnBasedMatch)
and player(_ player: GKPlayer, receivedTurnEventFor match: GKTurnBasedMatch, didBecomeActive: Bool)
Also, I do get the banner from Game Center at the top of the screen, and if I tap it, it does register the turn event, but it just won't detect when an invite is received.
Any suggestions?
swift - 如何在 TurnBasedGame 中为匹配过程定义超时而不等待很长时间?
我像这样结束回合,但我想暂停搜索玩家,我遇到的问题是 turnTimeout 仅适用于活跃玩家,但不适用于状态“匹配”。有没有其他方法可以在给定时间后停止配对?请帮帮我。谢谢
ios - 重试 endTurnWithNextParticipants
endTurnWithNextParticipants
我想处理失败的错误情况。cacheFailedEndTurnWithNextParticipants
因此,我通过调用本文末尾的方法来存储匹配数据。我提供的功能仅供参考。
问题是我不知道如何在 uncache 方法中恢复数据。如何加载GKTurnBasedPlayers
nextParticipants 列表?我GKPlayer::loadPlayersForIdentifiers
现在使用,但收到以下警告:
如何GKTurnBasedParticipants
从 ID 加载?
是否应该以另一种方式进行重新传输?
ios - iOS 回合制比赛,推送通知不起作用,未调用 GKTurnBasedEventListener 函数
在我的 iOS 回合制比赛中,我正在尝试接收通知并获取
被调用,没有成功。
我将我的视图模型注册到本地播放器
我希望在其他玩家执行后触发
但没有成功。
如果我强制重新加载 matchData,那么我将获得第二个玩家刚刚提交的数据。所以 endTurn 工作正常。
有什么我做错了吗?
更新:所以我创建了一个新项目,复制了我所有的文件,仅启用了 Game Center 功能。
当开发它运行完美时,我连接了两个设备(具有不同的苹果 ID)。通知正在工作,Turnbasedlistener 正在触发。
我一发布它进行内部测试,它就停止工作了!!!
ios - 创建/加入比赛后的 GKTurnBasedMatch 将第二名玩家状态打印为匹配?
通过使用 GKTurnbaseMatch 默认匹配方案,我能够连接到匹配。我还可以通过编程方式和使用默认视图控制器创建一个新的匹配项。我还可以通过编程方式和使用默认视图控制器找到在 Game Center 中创建本地用户的匹配列表。但是总是提到轮到我,因为我没有和下一个参与者叫 end turn。1. 匹配连接后,调用 didFindMatch 并且接收到的匹配对象不打印预期的第二个玩家的 ID,而是将该玩家的状态打印为“匹配”。
此匹配打印如下。
]
我怎么能连接两个玩家。
我可以找到本地玩家创建的所有比赛,有没有办法在游戏中心找到任何人创建的空比赛列表。
如何使用比赛 ID 加入比赛?
ios - GKTurnBasedEventListener 无法设置为我的 ViewController 的委托?
在 objC中,当时由Rawendrich for编写的语法,现在由 Apple 更改如下。GKTurnBasedEventListener
GKTurnBasedEventHandler
GKTurnBasedEventListener
现在,在将其转换为 swift 之后,并使用写下而不是 的作文GKTurnBasedEventHandler
,这是以下方式。
不幸的是,这不是GKTurnBasedEventListener
为我的ViewController
.
请如果你们中的任何人可以为我解决这个问题,因为没有这个我无法阅读事件侦听器的默认函数。
干杯!
ios - GKTurnBasedMatch:无法获取调用 saveCurrentTurn(withMatch ..) 的 GKLocalPlayerListener 委托方法?
我正在尝试使用 Game Center 默认功能保存比赛数据。以下功能工作得很好,事情得到了保存。
这个方法是在IOS 6中引入的,当时他们像发送推送通知给对手一样endTurnWithNextParticipant
,但是现在在当前的IOS 10中,如果他们删除了发送推送通知的功能,但应该有其他方法来检测matchData
更新对手方。
ios - iOS 游戏中心 GKTurnBasedMatchmakerViewController - 有时工作,其他失败
我正在开发基于回合制的比赛应用 Wordiamo。它通过游戏中心联网。我在通过 GKTurnBasedMatchmakerViewController 邀请新玩家时遇到问题。我部署它:
启动视图控制器后,当我按下邀请朋友时,有时它可以正常工作(可能 30-50% 的时间),显示消息邀请。但很多时候它返回以下错误:
Error Domain=ExtensionErrorDomain Code=-5900 "(null)": 操作无法完成。(ExtensionErrorDomain 错误 -5900。) 2017-11-13 17:53:10.616581-0800 Wordiamo[7733:1484145] viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}
有什么想法可能导致这种失败,这种失败只会在某些时候发生?谢谢。
ios - GKTurnBasedMatch 不会一直推进到下一个玩家(Xamarin、Apple GameKit)
我正在为棋盘游戏使用回合制比赛,当回合完成时,我调用 GKTurnBasedMatch.EndTurn 并将比赛参与者和新的比赛数据作为参数传递。我需要游戏向不匹配的玩家推进,但它只有在与超时值相关的一些不确定时间之后才会这样做。将超时值设置为 0 只会阻止游戏超过玩家 1。比赛数据正在更新,因此应用程序肯定正在与 Game Center 服务器进行通信。我在这里想念什么?
game-center - GKTurnBasedMatch - CurrentParticipant 未触发播放器( receivedExchangeReplies )
所以我已经在这几个星期了,从来没有在网上的任何地方找到答案。源代码注释、各种文档和各种来源声称,ReceivedExchangeReplies(GKPlayer, GKTurnBasedExchangeReply[], GKTurnBasedExchange, GKTurnBasedMatch)
当交换的所有接收者回复或超时时,应该调用该函数。应该为交换的发起者和 currentParticipant 调用它。
但是在我的应用程序中,它只会被调用为交换的发起者,而不是轮流持有者。我无法继续我的编码,因为当前的轮流持有者应该在完成交换后合并和解决交换。但它不能这样做,因为它永远不会收到有关交换完成的通知。
AuthenticationHandler工作正常,与问题无关:
以下是交换请求的发送方式:
被回复回复:
在完成交换之后,应自动调用以下覆盖函数。对于双方,对于交易所的发起者和当前的持有者:
这是上述 ObjectiveC 函数的 Swift 版本。
现在像所说的问题是,上面的函数只为交换的发起者调用,而不是为当前的持有者调用(就像它应该是的那样)。当前的回合持有者希望将交易所所做的更改合并到游戏存档数据中。他没有得到应有的通知会留下一个问题和问题,因为他不能在没有得到通知的情况下采取行动。我可以通过另一个额外的交换手动通知他(这是我目前正在使用的解决方法),但这在某种程度上是题外话,因为他必须盲目地合并新的交换而不确定它是否已完成。
前 3 个步骤似乎工作得很好,因为我看到交换的发起者被通知了。唯一的问题是第四个函数没有像文档和教程中描述的那样被自动调用。
我最近的一个解释是,交换完成得太快了,而听众却没有意识到它曾经是活跃的(交换在收到后立即回复);但这只是一个疯狂的猜测。即使我想......无论我做什么来延迟回复交换(例如在交换上保存引用,DispatchQueue
用于延迟的函数调用或类似的)都会导致交换结果为零或通信错误(消息是通过不同的代理错误发送)。
基本上,我想知道轮机持有人是否真的应该通过调用上述函数得到通知,或者它是否可能已被更改。
我真的很感谢这里的帮助,我已经在这工作了好几个星期了,还没有到任何地方。其他一切工作正常。我使用最新版本的 Swift 和使用 GKLocalPlayer 的最新方法,而不是直接实现侦听器(就像到处推荐的那样)。
亲切的问候, Skeltek