gpt4 book ai didi

ios - 如何管理 2G 网络上的 openfire 连接?

转载 作者:行者123 更新时间:2023-11-29 00:21:32 24 4
gpt4 key购买 nike

我创建了消息应用程序,例如 WhatsApp 和徒步旅行。它适用于 3G、4G 和 Wifi 网络。当用户切换到 2G 网络时,我的应用程序连接中断,但 WhatsApp 和徒步旅行工作正常。我在管理应用程序连接的地方发布代码::

#pragma mark - connect to the server

- (BOOL)connect {

if (!self.xmppStream) {
[self setupStream];
}

NSString *jabberID = [[NSUserDefaults standardUserDefaults] stringForKey:kUserName];
if (![self.xmppStream isDisconnected]) {
return YES;
}

if (jabberID == nil || kXMPPPassword == nil) {

return NO;
}
[self.xmppStream setMyJID:[XMPPJID jidWithString:jabberID]];

[self.xmppStream setHostName:kXMPPHost];

NSError *error = nil;
if (![self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error])
{
// UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Can't connect to server %@", [error localizedDescription]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
// [alertView show];

NSLog(@"errorerrorerrorerrorerrorerror :- %@", error);
return NO;
}
return YES;}

- (void)connectThenSignIn {
if ([_xmppStream isConnecting]) { // Connection error, connection is being established
return ;
}
if ([_xmppStream isDisconnected]) { // If disconnected, a server connection is established
[self connect];
_goToRegisterAfterConnected = NO;
} else if ([_xmppStream isConnected]) {
[self doSignIn];
} }

请建议我管理每个网络(2G、3G、4G 和 wifi)上的 openfire 连接的最佳方法。

最佳答案

这些应用程序可能在不可靠的 IP 网络(如 2G)上使用推送通知来接收更新。这使他们可以在线显示,而无需保持与服务器的持续连接。

使用 XMPP 很难做到这一点 -- 该协议(protocol)的编写假设用户只需要在连接到服务器时可以访问。一些 XEP 扩展添加了部分解决方法,但协议(protocol)作为一个整体不太适合移动客户端。 ( This has been a well-known limitation since at least 2014. ) 您可能需要考虑替代方案。

关于ios - 如何管理 2G 网络上的 openfire 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105912/

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