OStack程序员社区-中国程序员成长平台

标题: ios - 如何在 iOS 应用程序中配置 XMPP Facebook 聊天 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 20:51
标题: ios - 如何在 iOS 应用程序中配置 XMPP Facebook 聊天

我正在开发一个使用 Facebook 聊天功能的 iOS 应用程序。

(我使用的是 Robbie Hanson 的 XMPPFramework)。

https://github.com/robbiehanson/XMPPFramework

在连接方法中我已经给出了我的用户名和密码

- (BOOL)connect
{
    if (![xmppStream isDisconnected]) {
        return YES;
    }

    NSString *myJID = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyJID];
    NSString *myPassword = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyPassword];

    //
    // If you don't want to use the Settings view to set the JID, 
    // uncomment the section below to hard code a JID and password.
    // 

     myJID = @"[email protected]";
     myPassword = @"Mypassword";

    if (myJID == nil || myPassword == nil) {
        return NO;
    }

    [xmppStream setMyJID:[XMPPJID jidWithString:myJID]];
    password = myPassword;

    NSError *error = nil;
    if (![xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error])
    {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle"Error connecting" 
                                                            message"See console for error details." 
                                                           delegate:nil 
                                                  cancelButtonTitle"Ok" 
                                                  otherButtonTitles:nil];
        [alertView show];

        DDLogError(@"Error connecting: %@", error);

        return NO;
    }

在上游方法中我已经给出了我的主机名和端口号

- (void)setupStream
{
    NSAssert(xmppStream == nil, @"Method setupStream invoked multiple times");


    xmppStream = [[XMPPStream alloc] init];

    #if !TARGET_IPHONE_SIMULATOR
    {


        xmppStream.enableBackgroundingOnSocket = YES;
    }
    #endif



    xmppReconnect = [[XMPPReconnect alloc] init];



    xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];


    xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];

    xmppRoster.autoFetchRoster = YES;
    xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;



    xmppvCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
    xmppvCardTempModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:xmppvCardStorage];

    xmppvCardAvatarModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:xmppvCardTempModule];


    xmppCapabilitiesStorage = [XMPPCapabilitiesCoreDataStorage sharedInstance];
    xmppCapabilities = [[XMPPCapabilities alloc] initWithCapabilitiesStorage:xmppCapabilitiesStorage];

    xmppCapabilities.autoFetchHashedCapabilities = YES;
    xmppCapabilities.autoFetchNonHashedCapabilities = NO;

    // Activate xmpp modules

    [xmppReconnect         activate:xmppStream];
    [xmppRoster            activate:xmppStream];
    [xmppvCardTempModule   activate:xmppStream];
    [xmppvCardAvatarModule activate:xmppStream];
    [xmppCapabilities      activate:xmppStream];

    // Add ourself as a delegate to anything we may be interested in

    [xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
    [xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];


    [xmppStream setHostName"chat.facebook.com"];
    [xmppStream setHostPort:5222];


    // You may need to alter these settings depending on the server you're connecting to
    allowSelfSignedCertificates = NO;
    allowSSLHostNameMismatch = NO;
}

有没有我遗漏的步骤?我不知道如何进一步进行。如果有人知道解决方案,请帮助我。请帮帮我 提前致谢。



Best Answer-推荐答案


尝试使用以下方法保护连接:

[xmppStream secureConnectionNSError *)];

 - (void)xmppStreamDidConnectXMPPStream *)sender; 

委托(delegate)方法。

希望对你有帮助。

关于ios - 如何在 iOS 应用程序中配置 XMPP Facebook 聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22660989/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4