Tag: ejabberd

XMPP ejabberd SaaS推送通知

这是对我以前的问题的更新, XMPP推送通知导致问题 。 感谢来自MickaëlRémond的回复延迟和重复问题已经消失,但是我仍然无法理解推送通知的行为。 如果我将应用程序移动到后台(没有locking设备或终止),它将不会收到任何推送通知,并且当我把它带回到前台时,所有的消息都会被完美接收。 当应用程序在前台,我locking设备,没有通知被触发,但消息收到完美。 当应用程序在后台,我locking设备,触发通知,消息接收完美,但有时消息收到后发送sendLastActivityQueryToJID 。 我不知道这里发生了什么,但如果你们有任何想法,请让我知道。 PS我已经删除背景模式形成我的应用程序。

通过丢失的连接xmpp丢失消息

我经历了这个问题 XMPP上丢失的设备断开连接 但没有答案。 当由于某些networking问题而导致连接丢失时,服务器不能识别它并继续向断开的接收机发送消息,这些消息永久丢失。 我有一个解决方法,我从服务器ping客户端,当客户端断开连接时,服务器能够在10秒后识别它,并将更多消息保存在队列中,防止它们丢失。 我的问题是可以100%失败保存消息传递可以通过使用其他方式来实现,我知道psi和许多其他xmpp客户端正在这样做。 在ios方面,我正在使用xmppframework

从XMPP获取离线消息而不在线

我们正在使用ejabberd服务器为我们的移动聊天应用程序。 我们正在为我们的IOS应用程序使用IOS XMPP-Framework( https://github.com/robbiehanson/XMPPFramework ) 但是我们在执行上遇到问题,我们找不到解决scheme。 我们已经实现了XMPP消息传递的各个方面,除了一件事之外, 虽然我们的应用程序是在后台,我们的ejabberd服务器向我们发送推送通知,通知我们关于离线消息。 (只发送离线消息的通知) 然后,我们决定实施IOS背景推送通知function,以在应用程序处于后台时获取脱机消息。 但问题是我们必须成为在线(发送状态)才能获得离线消息。 但是当我们这样做时,会产生两个不希望的后果: 发送消息的一方看到我们作为在线(尽pipe我们在后台) 由于我们在应用程序处于后台时正在联机,因为我们在线并且服务器只能发送离线消息的通知,所以我们的服务器无法发送其他人的消息的推送通知。 为了解决这个问题,只有我能想到的是,如果有办法从xmpp服务器上检索离线消息而不上网。 有谁知道是否有任何方式与XMPP框架的iOS [编辑]让我再澄清一点: 问题不仅仅是一个: 问题1 – 推送通知问题: 1.1 – Server check if the message is sending to an online or offline user. If the user is offline server sends push notification to inform user but if the user is online server […]

ejabberd服务器广播消息

总之,我想ejabberd服务器发送一些消息给一组用户客户端。 用户组可能会改变。 例如,服务器向组1发送消息,然后向组2发送不同的消息。 换句话说,如何让ejabberd服务器向客户端发送消息? 我知道如何从客户端发送消息到客户端。

使用XMPP的iOS连接到ejabberd失败

我使用https://github.com/robbiehanson/XMPPFramework连接到我自己的ejabberd服务器,但经过协商后总是失败。 这里是我得到的日志:2014-01-17 07:14:40.780 Chat [48246:70b] error:(null) 2014-01-17 07:14:40.789 Chat [48246:70b] xmppStreamWillConnect 2014-01-17 07:14:46.0​​76 Chat [48246:70b] socketDidConnect 2014-01-17 07:14:46.0​​77 Chat [48246:70b] xmppStreamDidStartNegotiation 2014-01-17 07:14:51.799 Chat [48246:70b] xmppStreamDidDisconnect:错误域= GCDAsyncSocketErrorDomain代码= 7“由远程对等closures的套接字”UserInfo = 0x918d2e0 {NSLocalizedDescription =由远程对等closures的套接字} 这里是代码: – (void)viewDidLoad { [super viewDidLoad]; self.stream = [[XMPPStream alloc] init]; self.stream.myJID = [XMPPJID jidWithString:@"test@gmail.com"]; self.stream.hostName = @"my host ip"; self.stream.hostPort = 5222; […]

如何处理MUC聊天消息 – 复制消息

我使用XMPP框架实现了一对一的聊天。它在一对一的聊天中有广泛的支持。 消息归档和提取非常简单。 但是我看到,处理群聊消息保存和显示非常困难。 sorting和谓词失败。 显示重复的消息。 这是我join我的房间之前,我已经保存的消息) XMPPRoomCoreDataStorage *coreDataRoomStorage=[self appDelegate].xmppRoomCoreDataStorage; XMPPRoom *room=[[XMPPRoom alloc]initWithRoomStorage:coreDataRoomStorage jid:user.bareJid]; [room activate:[self appDelegate].xmppStream]; [room addDelegate:[self appDelegate] delegateQueue:dispatch_get_main_queue()]; [room joinRoomUsingNickname:user.user_name history:nil]; 我看到,有几个冗余的消息保存。 一条消息被保存3-4次。 我可能会做错什么。 有些身体会有帮助! 这是我在房间里发送信息的代码 – (NSFetchedResultsController *)fetchedResultsController{ if (fetchedResultsController == nil) { NSManagedObjectContext *moc = [[self appDelegate] managedObjectContext_message]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:moc]; NSPredicate *predicate=[NSPredicate predicateWithFormat:@"bareJidStr=%@",_thisRoom.roomJID.bare]; NSSortDescriptor *sd1 = [[NSSortDescriptor […]

XMPP上的GroupChat推送通知

我们正在IOS和Android上开发一个xmpp应用程序。 我们使用ejabberd作为xmpp服务器,我们也使用mod_interact( https://github.com/adamvduke/mod_interact )通知我们的web服务器向客户端发送推送通知,以获取他们的离线消息:Flow是这样的: 发件人将消息发送给ejabberd Ejabberd收到消息并检查收款人是否在线 如果收款人离线,ejabberd保存离线消息 mod_interact在ejabberd接收到离线消息并将消息传递给我们的Web服务器时起作用 Web服务器查找有关客户端的推送通知信息并发送推送通知 它的工作很好,1对1聊天。 但在群聊(MUC)mod_interact不工作,我不能发送推送通知组收件人。 你知道任何其他的解决scheme,以解决这个问题,1对1和群聊。 谢谢

XEP – 0055与iOS和ejabberd?

我正在尝试实现由ejabbed支持的XEP-0055,如支持的xeps所示 这是我的要求: XMPPIQ *iq = [[XMPPIQ alloc] init]; [iq addAttributeWithName:@"type" stringValue:@"get"]; [iq addAttributeWithName:@"from" stringValue:@"testuser1@company.com"]; [iq addAttributeWithName:@"to" stringValue:@"company.com"]; [iq addAttributeWithName:@"id" stringValue:@"search1"]; XMPPElement *query = [XMPPElement elementWithName:@"query"]; [query setXmlns:@"jabber:iq:search"]; [iq addChild:query]; [self.xmppStream sendElement:iq]; 我得到这个回应: <iq xmlns="jabber:client" from="company.com" to="testuser1@company.com/2834146151141475281662718" type="error" id="search1"> <query xmlns="jabber:iq:search"/> <error code="501" type="cancel"> <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/> </error> </iq> 为什么我收到的function没有实现? 链接到官方的XEP 描述。