【问题标题】:Setting up XMPPFramework for iOS为 iOS 设置 XMPPFramework
【发布时间】:2014-08-05 02:49:26
【问题描述】:

我正在开发具有聊天功能的 iOS 应用程序。我想知道是否有任何资源可以配置 XMPPFramework 以便将我的 iOS 应用程序与 Openfire 服务器连接。

我是 XMPP 协议的新手。

我目前正在学习 XMPP Stream 和 Rosters,但我至少需要建立连接才能正常工作。

请帮忙。

【问题讨论】:

  • 大家好 在用 xmpp 苦苦挣扎之后,我现在得到了连接工作,为了做到这一点,我必须输入我的 mac 的主机名,而不是服务器名。但我现在可以连接用户身份验证。感谢基思的帮助。

标签: ios objective-c xmpp xmppframework


【解决方案1】:

要开始使用,请深入了解 XMPPFramework-master > Xcode > iPhoneXMPP 中的示例 iOS 项目。

最好先对项目本身进行调整,并从中获得理解,然后再继续创建自己的 XMPP 项目。

基本上XMPP连接OpenFire服务器,大部分配置都在AppDelegate中。

  1. 在 XMPP 设置中设置 OpenFire 服务器的详细信息:

    - (void)setupStream
    {
        ...
    
        // Specify your server's IP address
        [xmppStream setHostName:@"123.12.123.12"];
    
        // Specify your host port
        [xmppStream setHostPort:5222];
    }
    
  2. 假设您已经在 OpenFire 的名册中创建了一个联系人,请在 XMPP 连接方法中设置一个联系人的凭据:

    - (BOOL)connect
    {
        /**
         * Of course, do not hardcode in an actual implementation
         * Appending the server name at the back of user ID is necessary
         */
        myJID = @"user@openfire";
        myPassword = @"password goes here";
    }
    
  3. 确保在应用启动方法中调用连接方法:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [self connect];
    }
    
  4. 确保您已在此处连接:

    - (void)xmppStreamDidConnect:(XMPPStream *)sender
    {
        NSLog(@"User Connected");
        // You are connected to the server at this point.            
    }
    
  5. 确保您在此处通过身份验证:

    - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
    {
        NSLog(@"User Authenticated");
        /**
         * Once you've reached this point,
         * Check your server for the online users. 
         * You should now be seen as "available".
         * Cheers!
         */
    }
    

【讨论】:

  • 感谢基思的回答!在主机名中我应该指定IP地址吗?或者我可以输入我拥有的服务器名称,因为在 openfire 服务器配置中出现了对我产生噪音的东西:第一个服务器名称:openfire.example.net 和主机名:Decuirs-Macbook-Pro.local,我可以直接工作吗有了这些还是我应该指定一个直接的IP地址?谢谢大家
  • 嗨 Keith,我检查了 XMPPiOS,它位于 XMPPFramework 的文件夹中,但我可以看到 Robbie 没有调用 [self connect] 方法来启动连接,他将 [self setupStream ] 相反,这是为什么呢?干杯。
  • @user3741129 您好,是的,您可以指定您的服务器名称,但是 IP 地址是更好的唯一标识符。关于你的第二个问题,这里的 if 语句中已经调用了它:if (![self connect])
  • 嗨 Keith 再次感谢您的回答,现在我可以在我的 openfire 服务器中看到活动,但我现在正在检查存在,因为当用户连接并验证它正在离线存在时,我有到方法 -(void)goOnline 和 -(void)goOffline,但我想我的服务器只有离线状态!有什么建议吗?谢谢。
  • @user3741129 在didReceivePresence委托方法NSLog(@"%@", [presence fromStr]);查看你是否在线
猜你喜欢
  • 1970-01-01
  • 2013-01-13
  • 2017-03-23
  • 2016-02-06
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 2014-05-28
  • 2014-09-23
相关资源
最近更新 更多