2017-01-03 36 views
0

不更新我用- (void)blockJID:(XMPPJID*)xmppJID方法在XMPPBlocking「不可用」(離線)存在下,在兩個端

<iq from='[email protected]/chamber' type='set' id='block1'> 
     <block xmlns='urn:xmpp:blocking'> 
     <item jid='[email protected]'/> 
     </block> 
    </iq> 

我想阻止在XMPP應用(例如WhatsApp)(多個)用戶。當我使用上面的代碼時,「不可用」存在不在兩端更新。但重新連接後,它會更新兩端的「不可用」狀態。

當我阻止用戶,我的要求是,

  • 用戶不應該在兩端接收消息(它完美的作品,甚至沒有重新連接)
  • 兩個用戶應該是「不可用」(另一端不接收任何事情,當我執行智商以上,所以只能在重新連接後工作)

我怎樣才能通知線下隔離存在阻塞後? 我如何以適當的方式實現這一點?

回答

0

終於我完成了。

對於通知下面的代碼中使用的好友(其他最終用戶),

XMPPPresence *presence = [[XMPPPresence alloc] initWithType:@"unavailable" to:jid]; 
[_xmppStream sendElement:presence]; 

和好友的存在下,在發送側本地更新。

對於無阻礙的情況,我只是再次訂閱好友(其他最終用戶)。

我不知道它的正確方法。我一直在等待你們所有人的完美解決方案。

+0

如果您想阻止某人,爲什麼不撤銷呈現訂閱? – dichen

+0

是的。我試過了,但是如果我喜歡這樣做,當我解鎖時我需要做什麼? –

+0

不知道你需要解鎖。檢查「阻止通信」https://xmpp.org/rfcs/rfc3921.html#privacy – dichen