如何在目标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服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective C中通过UIView获取UIAlertController?
如何在 iOS 应用程序中通过 UIPickerView 实现视图之间的转换?