如何在目标c中通过ios中的XMPPFramework连接XMPP服务器

Posted

技术标签:

【中文标题】如何在目标c中通过ios中的XMPPFramework连接XMPP服务器【英文标题】:How to connect XMPP server through XMPPFramework in ios in objective c 【发布时间】:2017-01-06 13:33:48 【问题描述】:

我在目标 C 中通过 ios 中的 XMPPFramework 连接到 XMPP 服务器, 我在 viewDidLoad 方法中初始化了连接参数,如下所示:

- (void)viewDidLoad 
[super viewDidLoad];
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];

xmppStream.hostName = @"hostname";
xmppStream.hostPort = 5222;

NSString *username = @"name@domainname.net";
NSString *password = @"123456";

[xmppStream setMyJID:[XMPPJID jidWithString:username]];

NSError *error = nil;
if (![xmppStream oldSchoolSecureConnectWithTimeout: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];


并尝试在按钮单击时进行身份验证,如下所示:

- (IBAction)connectToXmpp:(id)sender 

NSLog(@"%hhd", [xmppStream isConnected]);
NSError *error = nil;

if (![xmppStream authenticateWithPassword:@"123456" error:&error]) 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:[NSString stringWithFormat:@"Can't authenticate %@", [error localizedDescription]]
                                                       delegate:nil
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
    [alertView show];

[xmppStream sendElement:[XMPPPresence presence]];

但是在按钮点击这里得到错误消息是错误消息:

谁能帮帮我。谢谢。

【问题讨论】:

你找到解决方案了吗? @Ankit Agarwal 是的,我明白了... 【参考方案1】:

@prem 纳特

在上面的代码中,您试图连接到- (void)viewDidLoad 中的服务器。 但是您可以在建立服务器连接后使用密码进行身份验证。

所以在建立连接时会调用XMPPStream Delegate- (void)xmppStreamDidConnect:(XMPPStream *)sender。您必须在 XMPPStream Delegate 中向服务器进行身份验证。

【讨论】:

以上是关于如何在目标c中通过ios中的XMPPFramework连接XMPP服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xcode 4 中通过一项操作归档多个目标

在 iOS 中通过蓝牙播放时从内置麦克风录制

如何在Objective C中通过UIView获取UIAlertController?

如何在 iOS 应用程序中通过 UIPickerView 实现视图之间的转换?

如何以编程方式在 iOS 中通过 IPv6 获取远程 MAC 地址

在 C 中通过引用传递时会发生啥?