【问题标题】:Getting Roster from XMPP in Swift在 Swift 中从 XMPP 获取名册
【发布时间】:2015-09-19 10:29:25
【问题描述】:

您好,我是 iPhone 开发的新手,我对 Objective c 一无所知。我正在使用 swift 开发应用程序。我将 XMPP 框架添加到我的项目中,并且 XMPP 连接成功。我正在使用以下代码来设置我的连接

func setupStream () {

        xmppStream = XMPPStream()
        xmppStream!.addDelegate(self, delegateQueue: dispatch_get_main_queue())
        xmppReconnect = XMPPReconnect();
        xmppRosterStorage = XMPPRosterCoreDataStorage();
        xmppRoster = XMPPRoster(rosterStorage: xmppRosterStorage);



        xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance();
        xmppvCardTempModule = XMPPvCardTempModule(withvCardStorage:xmppvCardStorage);

        xmppvCardAvatarModule = XMPPvCardAvatarModule(withvCardTempModule:xmppvCardTempModule);

        xmppCapabilitiesStorage = XMPPCapabilitiesCoreDataStorage.sharedInstance();
        xmppCapabilities = XMPPCapabilities(capabilitiesStorage: xmppCapabilitiesStorage);

        // SET UP ALL XMPP MODULES
        xmppRoster!.autoFetchRoster = true;
        xmppRoster!.autoAcceptKnownPresenceSubscriptionRequests = true;

        xmppCapabilities!.autoFetchHashedCapabilities = true;
        xmppCapabilities!.autoFetchNonHashedCapabilities = true;

        xmppMessageArchivingStorage = XMPPMessageArchivingCoreDataStorage.sharedInstance();
        xmppMessageArchivingModule = XMPPMessageArchiving(messageArchivingStorage: xmppMessageArchivingStorage);
        xmppMessageArchivingModule!.clientSideMessageArchivingOnly = true;


        // Activate xmpp modules
        xmppReconnect!.activate(xmppStream);
        xmppRoster!.activate(xmppStream);
        xmppvCardTempModule!.activate(xmppStream);
        xmppvCardAvatarModule!.activate(xmppStream);
        xmppCapabilities!.activate(xmppStream);
        xmppMessageArchivingModule!.activate(xmppStream);


        xmppRoster!.addDelegate(self, delegateQueue:dispatch_get_main_queue());
        xmppMessageArchivingModule!.addDelegate(self, delegateQueue:dispatch_get_main_queue());


          }

以下方法都可以正常工作

func xmppStream(sender: XMPPStream?, didReceiveMessage: XMPPMessage?) {
}


func xmppStream(sender: XMPPStream?, didReceivePresence: XMPPPresence?) {
}

现在我想从 XMPP 获取花名册。我在 roster 类中找到了一个委托方法

(void)xmppRosterDidEndPopulating:(XMPPRoster *)sender;

但是如何在 Swift 类中使用它。请帮帮我....

【问题讨论】:

  • 或许您应该为 XMPPRoster 设置一个委托?
  • 我终于得到了答案 func xmppRosterDidEndPopulating(sender: XMPPRoster?){ var jidList = xmppRosterStorage?.jidsForXMPPStream(xmppStream) println("List=(jidList)") }

标签: swift xmpp


【解决方案1】:

最后我通过这样设置委托得到了答案

func xmppRosterDidEndPopulating(sender: XMPPRoster?){
        var jidList = xmppRosterStorage?.jidsForXMPPStream(xmppStream)
        println("List=\(jidList)")

    }

【讨论】:

  • 您好,您的代码帮助了我很多,节省了我的时间。我正在快速工作,但我在“NSParameterAssert(storage != nil);”中崩溃了在目标 c 中的 XMPP 类中。知道你为此做了什么吗?
  • 这是关于 XMPP 中的哪些功能?
猜你喜欢
  • 2015-05-24
  • 2015-12-25
  • 2014-04-12
  • 2014-07-27
  • 2016-01-30
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多