如何在 iOS 中用 xmpp 屏蔽好友?

Posted

技术标签:

【中文标题】如何在 iOS 中用 xmpp 屏蔽好友?【英文标题】:How to block friend with xmpp in iOS? 【发布时间】:2013-07-17 07:15:50 【问题描述】:

我正在开发聊天应用程序。我想屏蔽朋友。我正在使用 xmpp 框架的 XEP-0016 扩展。

这是我的代码..

- (void)setupXMPPPrivacy

    NSLog((@"%s [Line %d] "), __PRETTY_FUNCTION__, __LINE__);
    //Init XMPPPrivacy List
    //xmppPrivacy = [[XMPPPrivacy alloc] init];
    xmppPrivacy = [[XMPPPrivacy alloc] initWithDispatchQueue:dispatch_get_main_queue()];
    //Activate xmpp modules
    [xmppPrivacy activate:xmppStream];
    //Delegate XMPPPrivacy
    [xmppPrivacy addDelegate:self delegateQueue:dispatch_get_main_queue()];



- (void)privacyBlock:(XMPPJID *)jid

    NSXMLElement *privacyElement = [XMPPPrivacy privacyItemWithType:@"jid" value:jid.bare action:@"deny" order:1];
    [XMPPPrivacy blockIQs:privacyElement];
    [XMPPPrivacy blockMessages:privacyElement];
    [XMPPPrivacy blockPresenceIn:privacyElement];
    [XMPPPrivacy blockPresenceOut:privacyElement]; 
    NSLog(@"-------> PRIVACY ELEMENT: %@", privacyElement);

    NSArray *arrayPrivacy = [[NSArray alloc] initWithObjects:privacyElement, nil];
    [xmppPrivacy setListWithName:@"public" items:arrayPrivacy];

但是,这不起作用。我做错了什么?

请帮忙。谢谢。

【问题讨论】:

为什么要添加2次委托? @Sunny 你的问题解决了吗?我有同样的问题,所以你的帮助将不胜感激 @Zhans 是的,我已经完成了,但不是通过 xmpp。我已经创建了一个将维护阻止列表的网络服务。 【参考方案1】:

我也遇到了同样的问题。第一个问题是 UUID 生成器,它返回 nil。但在 ios 5 中添加了 NSUUID 类。所以使用[[NSUUID UUID] UUIDString] 我解决了这个问题。第二个问题是我的大错误。我初始化了 xmmpSram 并请求阻止,但打开流需要一些时间。所以,我在打开流之前请求。

【讨论】:

以上是关于如何在 iOS 中用 xmpp 屏蔽好友?的主要内容,如果未能解决你的问题,请参考以下文章

XMPP房间邀请好友IOS

如何在 XMPP 中接受好友请求?

如何在 iOS 中请求 Facebook XMPP 聊天权限?

ios怎样在xmpp自带的数据库里面插入数据

如何在 XMPP 中阻止匿名用户

xmpp ios:如何从 openfire 服务器检索所有注册用户