Tag: gsession

什么减缓GKSession的networking吞吐量?

我实现了一个应用程序,根据Ray Wenderlich关于GKSession的教程和Matt Ghallagher关于audiostream的教程 ,从一个iphone实时播放音乐到另一个。 一切工作完美..直到我们已经决定用我们自己的replace扑克游戏的用户界面。 结果突然间networking吞吐量急剧下降。 下面是一个探查器快照的服务器 这里是原始应用程序的客户端的快照 这里是更新后的用户界面的应用程序的快照(主机是旧的一样): 有一件事要记住,我们不只是改变用户界面..我们也改变了一些networking代码..这是我认为是放缓的东西(我做了很多的性能testing在用户界面上。消除所有的花里胡哨和我得到同样的减速) 有任何想法吗? 有人build议保持一个GKSession广播可用性放慢了一点事情..我确信,这不是在我的应用程序的情况下.. 更新:在看networking分析(使用仪器)后,似乎有一个未知的过程有很多的networking活动..有没有办法来检测这个未知的过程? 这是好的应用程序的屏幕截图: 这里是坏的应用程序的屏幕截图: 注意到两者之间的区别:在另一个使用比其他更多的networking活动..想法?

GKSession对等体断开连接导致其他对等体出现断开连接

我的应用程序使用GKSessionModePeer的GKSession。 它必须处理任意连接和断开连接的对等,因为这是一个长时间运行的应用程序,用户应该能够后台回来。 这在大多数情况下工作正常。 但是有时,当一个对端断开连接时,其他设备会接收到didChangeState通知:GKPeerStateDisconnected不仅是真正断开连接的设备,还包括实际上仍然连接的其他设备。 我可以通过下面的代码和4个设备(全部在iOS 5上)重现此行为。 当一切顺利时,当设备A退出应用程序,所有其他设备得到通知,并在这些设备上的日志输出是: Service: didChangeState: peer A disconnected (12345) 但过了一段时间,当一个设备断开(再次说A),其他设备将获得额外的回拨设备,没有断开连接。 例如,设备C将得到: Service: didChangeState: peer A disconnected (…) // expected Service: didChangeState: peer B disconnected (…) // never disconnected 大约在同一时间,我有时在断开设备的日志中看到这些消息,不清楚它们是否实际相关: dnssd_clientstub DNSServiceRefDeallocate called with NULL DNSServiceRef 和/或 dnssd_clientstub DNSServiceProcessResult called with DNSServiceRef with no ProcessReply function 一旦发生这种情况,GKSession似乎处于不良状态,不再正确处理连接和断开连接。 为了恢复到良好的状态,我必须在所有设备上杀死应用程序,稍等一下,重新开始。 我试过不同的方式来处理GKSession的时候去后台(只设置可用=否,不断开,根本不做任何事情),没有任何工作更好。 有其他人遇到这种行为(并解决了它)? 在AppDelegate中使用简单的repro例子(使用arc): – […]