我正在为 iPhone 开发一个应用程序,其中一个功能是使用 XMPPFramework 的即时消息系统。到目前为止,我正在使用 Google Talk 对其进行测试。委托与管理用户界面的类相同。所以,我得到了这个代码:
在 viewDidLoad 中:
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupStream];
}
setupStream 方法:
- (void) setupStream
{
NSLog(@"Inside setupStream");
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
[self connect];
}
连接方法:
- (BOOL) connect
{
NSLog(@"Inside connect method");
General *general = [General sharedManager];//this is a singleton to manage settings for every user
NSString *chatid;
NSString *chatpass;
//chatid=[general user];
chatid=@"somegmailaccount@gmail.com";
xmppStream.myJID=[XMPPJID jidWithString:chatid];
if (![xmppStream isDisconnected]) {
return YES;
}
NSError *error = nil;
if (![xmppStream connect:&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];
return NO;
}
return YES;
}
在 xmppStreamDidConnect 方法中:
- (void) xmppStreamDidConnect:(XMPPStream *)sender
{
[xmppStream authenticateWithPassword:@"password" error:NULL];
[self goOnline];
}
和 goOnline 方法:
- (void) goOnline
{
XMPPPresence *presence = [XMPPPresence presence];
[[self xmppStream] sendElement:presence];
NSLog(@"Presence sent");
}
这样,就不会发送出席信息。我有另一个谷歌帐户,我尝试进行测试(例如,testing@gmail.com),并且在这个帐户中没有看到 somegmailaccount.gmail.com 的存在。两个帐户相互关联并且相互了解,因为我使用相同的帐户来开发 Android 应用程序。
知道我做错了什么吗?任何帮助表示赞赏。
非常感谢你。