gpt4 book ai didi

ios - GKSession - 在应用程序之间切换并维护 session

转载 作者:行者123 更新时间:2023-11-28 17:34:08 25 4
gpt4 key购买 nike

我在两个应用程序之间有一个 GKSession。一个是服务器,另一个是客户端。服务器使客户端应用程序使用 urlscheme 命令启动另一个应用程序。

我希望发生的是,当客户端应用程序关闭时, session 结束,另一个应用程序打开,然后我们开始一个新 session 。

实际发生的事情对我来说有点神秘。基本上,新应用程序会打开并开始与服务器通信。大量的数据包在两者之间来回发送......但是在很短的时间(3-5 秒)之后,GKPeerStateDisconnected 情况发生在 session 中:peer:didChangeState:与先前连接的应用程序。这将停止应用程序之间的所有通信。

我最初使用的是对等选择器,它工作得很好(除了你需要做很多手动按钮按下)。现在我需要删除对等选择器并让这个过程自动发生。

-(void)session:(GKSession *)session 
peer:(NSString *)peerID
didChangeState:(GKPeerConnectionState)state
{
BOOL peerChanged = NO;
NSLog(@"peer:%@ didChangeState: %d", peerID, state);

switch(state) {
case GKPeerStateAvailable:
[session connectToPeer:peerID withTimeout:1000];
peerChanged = YES;
break;

case GKPeerStateUnavailable:
peerChanged = YES;
break;

case GKPeerStateConnected:
[self.peerList addObject:peerID];
[self setupConnectionWithPeer:peerID toSession:session];
break;

case GKPeerStateDisconnected:
[self.peerList removeObject:peerID];
if(self.peerList.count == 0) self.isConnected = NO;
break;

}
NSLog(@"Number of peers: %d", self.peerList.count);
}

最佳答案

这听起来像是对多任务处理的限制。 Peer Picker 可能具有额外的系统级访问权限,允许您的后台应用程序继续与服务器通信。如果不使用该代码,您的后台应用程序将获得传统的 3-5 秒来完成其操作,然后进入后台状态,断开与服务器的连接。

关于ios - GKSession - 在应用程序之间切换并维护 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com