gpt4 book ai didi

ios - 如何在 iOS 的 XMPP 框架中设置资源

转载 作者:行者123 更新时间:2023-11-28 23:35:46 24 4
gpt4 key购买 nike

我正在 iOS 和 Android 中使用 ejabberd 创建一个聊天应用程序。该应用程序还具有离线推送通知。为此,我需要在每次登录时连接到相同的资源。在 android 中,我可以按如下方式执行此操作

 XMPPTCPConnectionConfiguration.Builder confBuilder = XMPPTCPConnectionConfiguration.builder()
.setServiceName(serviceName)
.setUsernameAndPassword(jidParts[0], password)
.setConnectTimeout(3000)
// .setDebuggerEnabled(true)
.setResource("xxxxx")
.setSecurityMode(ConnectionConfiguration.SecurityMode.required);

但在 IOS 中,我无法 setResource 因为我不知道如何在 iOS 上设置它。登录代码如下

 - (BOOL)connect:(NSString *)myJID withPassword:(NSString *)myPassword auth:(AuthMethod)auth hostname:(NSString *)hostname port:(int)port
{
if (![xmppStream isDisconnected]) {
[self disconnect];
}

if (myJID == nil || myPassword == nil) {
return NO;
}

NSLog(@"Connect using JID %@", myJID);

[xmppStream setMyJID:[XMPPJID jidWithString:myJID]];
username = myJID;
password = myPassword;
authMethod = auth;

xmppStream.hostName = (hostname ? hostname : [username componentsSeparatedByString:@"@"][1]);
if(port){
xmppStream.hostPort = port;
}

NSError *error = nil;
if (port == 5223) {
self.xmppReconnect.usesOldSchoolSecureConnect = YES;
if (![xmppStream oldSchoolSecureConnectWithTimeout:30 error:&error])
{
DDLogError(@"Error connecting: %@", error);
if (self.delegate){
[self.delegate onLoginError:error];
}

return NO;
}
} else {
if (![xmppStream connectWithTimeout:30 error:&error])
{
DDLogError(@"Error connecting: %@", error);
if (self.delegate){
[self.delegate onLoginError:error];
}

return NO;
}
}

return YES;
}

如何在上面的代码中添加资源?

最佳答案

您可以通过将XMPPJID的init方法更改为来设置资源

[xmppStream setMyJID:[XMPPJID jidWithString:myJID resource:resourceId]];

这是XMPPJID中的重载方法

关于ios - 如何在 iOS 的 XMPP 框架中设置资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55037051/

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