Я занимаюсь разработкой приложения для чата XMPP на Android и iOS.
Чат работает нормально между симулятором 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];
}