XMPPFramework (Swift) 的问题

     2023-02-24     142

关键词:

【中文标题】XMPPFramework (Swift) 的问题【英文标题】:Issue with XMPPFramework (Swift) 【发布时间】:2018-09-13 14:03:51 【问题描述】:

当我运行此代码时,没有迹象表明 XMPPController 已连接到 Ejabberd 服务器。 XMPPStreamDelegate 方法也没有被调用。就好像代码甚至不存在一样。应该有一些迹象表明我不应该在那里连接?其他人有这个问题吗?这是我的代码。谢谢。

XMPPController 类:

import Foundation
import XMPPFramework

enum XMPPControllerError: Error 

case wrongUserJID



class XMPPController: NSObject 

var xmppStream: XMPPStream

let hostName: String
let userJID: XMPPJID
let hostPort: UInt16
let password: String

init(hostName: String, userJIDString: String, hostPort: UInt16, password: String) throws 
    guard let userJID = XMPPJID(string: userJIDString) else 
        throw XMPPControllerError.wrongUserJID
    


    self.hostName = hostName
    self.userJID = userJID
    self.hostPort = hostPort
    self.password = password

    self.xmppStream = XMPPStream()
    self.xmppStream.hostName = hostName
    self.xmppStream.hostPort = hostPort
    //self.xmppStream.startTLSPolicy = XMPPStreamStartTLSPolicy.allowed
    self.xmppStream.enableBackgroundingOnSocket = true
    self.xmppStream.myJID = userJID


    super.init()
    self.xmppStream.addDelegate(self, delegateQueue: DispatchQueue.main)







func connect() 


    if !self.xmppStream.isDisconnected() 
        return
    

    do 

        try self.xmppStream.connect(withTimeout: 5)

     catch 

        print("ERROR CONNECTING")

    





extension XMPPController: XMPPStreamDelegate 


func xmppStreamDidConnect(_ sender: XMPPStream!) 
    print("Stream: Connected")
    try! sender.authenticate(withPassword: self.password)


func xmppStreamDidAuthenticate(_ sender: XMPPStream!) 
    self.xmppStream.send(XMPPPresence())
    print("Stream: Authenticated")



AppDelegate(用于测试 XMPPController)

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

var window: UIWindow?
var xmppController: XMPPController!

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.

    try! self.xmppController = XMPPController(hostName: "192.168.0.33", userJIDString: "admin@192.168.0.33", hostPort: 5221, password: "password")



    return true


func applicationWillResignActive(_ application: UIApplication) 



func applicationDidEnterBackground(_ application: UIApplication) 



func applicationWillEnterForeground(_ application: UIApplication) 



func applicationDidBecomeActive(_ application: UIApplication) 



func applicationWillTerminate(_ application: UIApplication) 





无论出于何种原因,这都不起作用。

【问题讨论】:

【参考方案1】:

您的 ejabberd 服务器是否正常工作。您可以通过运行 ./ejabberdctl status 检查 ejabberd 服务器的状态。另外,你能检查一下 ejabberd 日志吗?检查您的 ejabberd 是否配置正确和工作的一个好方法是使用 Adium 登录到您的 ejabberd 服务器。

检查这部分代码中端口是5222而不是5221

try! self.xmppController = XMPPController(hostName: "192.168.0.33", userJIDString: "admin@192.168.0.33", hostPort: 5221, password: "password")

如果 5221 正确,你应该调用函数 connect()。

self.xmppController.connect()

连接

【讨论】:

XMPPFramework - 消息未发送

】XMPPFramework-消息未发送【英文标题】:XMPPFramework-Messagenotsent【发布时间】:2013-04-1511:03:58【问题描述】:我是iOS的新手。我正在使用XMPPFramework构建一个应用程序。但是最近几天我遇到了一个问题。找不到任何解决方案。问题... 查看详情

XMPPFramework - 删除已注册的用户帐户

】XMPPFramework-删除已注册的用户帐户【英文标题】:XMPPFramework-Deletearegistereduseraccount【发布时间】:2014-06-0319:08:50【问题描述】:我在我的iOS聊天应用程序中使用https://github.com/robbiehanson/XMPPFramework。我需要帮助来删除已注册的用... 查看详情

为啥 XMPPFramework 会阻塞?

】为啥XMPPFramework会阻塞?【英文标题】:WhyisXMPPFrameworkblocking?为什么XMPPFramework会阻塞?【发布时间】:2017-06-3015:29:32【问题描述】:我们正在尝试获取XMPPFramework运行的最小示例。考虑这个简单的类:importFoundationimportXMPPFrameworkc... 查看详情

XMPPFramework 整理文件传输

】XMPPFramework整理文件传输【英文标题】:XMPPFrameworkfinishingfiletransfer【发布时间】:2018-06-1113:55:29【问题描述】:我在我的项目中使用XMPPFramework,我正在尝试互相发送照片,但我被卡住了。文件传输第一次运行良好,但在尝试发... 查看详情

XMPPFramework:尝试更新 VCard 上的昵称

】XMPPFramework:尝试更新VCard上的昵称【英文标题】:XMPPFramework:TryingtoupdatenicknameonVCard【发布时间】:2013-05-1314:54:26【问题描述】:这个问题就像它的标题所说的那样简单:我正在尝试更新他的VCard上的用户昵称,但我不能。我正... 查看详情

XmppFramework 显示错误

】XmppFramework显示错误【英文标题】:XmppFrameworkshowingerror【发布时间】:2016-10-1206:32:02【问题描述】:我正在使用XMPPFramework在Objective-C中创建聊天应用,我已经使用pod安装了XMPPFramework...pod已成功安装,但是当我在安装后构建我的... 查看详情

XMPPFramework - 存在不变

】XMPPFramework-存在不变【英文标题】:XMPPFramework-Presencenotchanging【发布时间】:2012-02-1811:30:21【问题描述】:我正在尝试将用户的存在设置为离开(或目前的任何内容)。我正在使用以下代码,但它似乎没有做任何事情。XMPPPresen... 查看详情

如何在 XMPPFramework 中更改 XMPP 用户的昵称?

】如何在XMPPFramework中更改XMPP用户的昵称?【英文标题】:HowcanIchangenicknameofXMPPuserinXMPPFramework?【发布时间】:2015-06-2808:40:08【问题描述】:我想在我的XMPP项目中更改用户的昵称。我正在使用此代码,但它不起作用。我可以更改... 查看详情

xmppStreamDidConnect 永远不会在 Swift 中被调用

...布时间】:2019-04-1811:39:42【问题描述】:我正在尝试使用XMPPFramework在Swift应用程序中连接到我的聊天服务器,但didConnect委托方法从未被调用。我在ObjectiveC中创建了一个基本应用程序,我可以毫无问题地在我的聊天服务器 查看详情

xmppframework 的 didReceive 存在无法正常工作

】xmppframework的didReceive存在无法正常工作【英文标题】:xmppframework\'sdidReceivepresenceisnotworkingproperly【发布时间】:2018-11-2711:15:57【问题描述】:我正在使用funcxmppStream(_sender:XMPPStream,didReceivepresence:XMPPPresence)管理在线离线状态。此... 查看详情

如何在 ios 的 XMPPFrameWork 中创建新的用户帐户

】如何在ios的XMPPFrameWork中创建新的用户帐户【英文标题】:HowcanicreateanewuseraccountinXMPPFrameWorkinios【发布时间】:2013-12-2611:04:52【问题描述】:您好,我已经尝试了一些在IOS中使用XMPPFrameWork注册新用户的代码。-(IBAction)Registaton:(id... 查看详情

iOS XMPPFramework registerWithPassword 错误

】iOSXMPPFrameworkregisterWithPassword错误【英文标题】:iOSXMPPFrameworkregisterWithPasswordERROR【发布时间】:2012-09-0819:16:47【问题描述】:我遇到了适用于iOS的XMPP框架的问题。每次我触发registerWithPassword方法时都会出现错误:"ErrorDomain=XMPPSt... 查看详情

xmppframework: iPhoneXMPP: RootController 没有更新朋友的存在

】xmppframework:iPhoneXMPP:RootController没有更新朋友的存在【英文标题】:xmppframework:iPhoneXMPP:RootControllernotupdatedwithfriend\'spresence【发布时间】:2013-02-1911:29:55【问题描述】:我尝试了iPhoneXMPP演示,但是当我的朋友在线或离线时,GUI似... 查看详情

在 iPhone 上使用 XMPPFramework 进行 Facebook 聊天

】在iPhone上使用XMPPFramework进行Facebook聊天【英文标题】:FacebookChatusingXMPPFrameworkoniPhone【发布时间】:2010-10-0514:05:35【问题描述】:是否有人已经使用他们的X-FACEBOOK-PLATFORM身份验证机制和XMPPFramework创建了连接到Facebook聊天服务器... 查看详情

XMPPFramework - 如何接收名册的存在信息以及名册列表?

】XMPPFramework-如何接收名册的存在信息以及名册列表?【英文标题】:XMPPFramework-Howtoreceivethepresenceinfoofarosteralongwithrosterlist?【发布时间】:2014-06-1316:19:40【问题描述】:在获取好友的在线信息时需要帮助。我正在调用“fetchRoster... 查看详情

XMPPFramework - XEP-0048:书签存储

】XMPPFramework-XEP-0048:书签存储【英文标题】:XMPPFramework-XEP-0048:BookmarkStorage【发布时间】:2013-12-2623:40:45【问题描述】:在我的应用程序中,我实现了创建XMPPRoom和邀请用户。现在,我正在寻找一种方法来存储这些组(我创建的... 查看详情

如何检查用户 JID 是不是已在 XMPPFrameWork 中使用

】如何检查用户JID是不是已在XMPPFrameWork中使用【英文标题】:HowtocheckifauserJIDisalreadytakeninXMPPFrameWork如何检查用户JID是否已在XMPPFrameWork中使用【发布时间】:2018-08-0903:04:09【问题描述】:我是xmppframework的新手。我有一个快速的... 查看详情

xmppframework 迪斯科项目过滤

】xmppframework迪斯科项目过滤【英文标题】:xmppframeworkdiscoitemsfiltering【发布时间】:2016-06-2215:55:10【问题描述】:有什么方法可以让我查询例如muc房间列表但指定某些限制条件。我已在描述字段下的每个房间的配置表单中附加了... 查看详情