我正在 Android 和 iOS 上开发一个 XMPP 聊天应用程序。
iPhone模拟器和iOS设备之间的聊天工作正常。它也适用于 Android 模拟器和 Android 设备。但是,它不适用于 android 设备和 iOS 设备。
有人可以向我建议我做错了什么吗?
提前致谢..
更新:
消息是从 Android 设备发送到 iOS 设备,但不是从 iOS 到 android。
我将它用于Android:
ConnectionConfiguration connConfig = new ConnectionConfiguration(testHost,portNumber);
connection = new XMPPConnection(connConfig);
connConfig.setSASLAuthenticationEnabled(true);
我在 iOS 上使用了这个:
XMPPJID *jid=[XMPPJID jidWithString:loginDetails.username];
password=loginDetails.password;
[[self xmppStream] setMyJID:jid];
NSError *error;
if (![[self xmppStream] connect:&error])
{
NSLog(@"Error connecting: %@", error);
return NO;
}
return YES;
if (allowSelfSignedCertificates)
{
[settings setObject:[NSNumber numberWithBool:YES] forKey:(NSString *)kCFStreamSSLAllowsAnyRoot];
}
if (allowSSLHostNameMismatch)
{
[settings setObject:[NSNull null] forKey:(NSString *)kCFStreamSSLPeerName];
}
else
{
// Google does things incorrectly (does not conform to RFC).
// Because so many people ask questions about this (assume xmpp framework is broken),
// I've explicitly added code that shows how other xmpp clients "do the right thing"
// when connecting to a google server (gmail, or google apps for domains).
NSString *expectedCertName = nil;
NSString *serverHostName = [sender hostName];
NSString *virtualHostName = [[sender myJID] domain];
if ([serverHostName isEqualToString:@"talk.google.com"])
{
if ([virtualHostName isEqualToString:@"gmail.com"])
expectedCertName = virtualHostName;
else
expectedCertName = serverHostName;
}
else
{
expectedCertName = serverHostName;
}
[settings setObject:expectedCertName forKey:(NSString *)kCFStreamSSLPeerName];
}