XMPPFrameworkを使用して、機能の1つがインスタントメッセージシステムであるiPhone用のアプリを開発しています。今では、Google トークでテストしています。デリゲートは、ユーザー インターフェイスを管理するクラスと同じです。だから、私はこのコードを得ました:
ビューでDidLoad:
- (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");
}
これで、プレゼンスは送信されません。テスト用に別の Google アカウント (たとえば、testing@gmail.com) を試していますが、このアカウントには somegmailaccount.gmail.com の存在は見られません。この同じアカウントを使用して Android アプリを開発したため、両方のアカウントが接続されており、お互いを認識しています。
私が間違っていることについて何か考えはありますか?どんな助けでも大歓迎です。
どうもありがとうございました。