iOS XMPP XEP-0060协议使用

2016-06-02  本文已影响234人  lionsom_lin

一、简介XEP-0060
XEP-0060是一个XMPP协议扩展来实现实现通用的 发布-订阅 功能。这个协议使 XMPP实体能在一个pubsub服务创建节点(主题)并发布信息到那些节点上;然后一个事件通知(携带或未带载荷)被广播到所有订阅了该节点的实体. PubSub因此坚持了经典的观察者设计模式,并可以作为广泛应用的服务基础,包括新闻提要,内容整合,富出席信息,地理位置,工作流系统,网络管理系统,以及任何其他需要事件通知的应用。

二、文档
官方文档:https://xmpp.org/extensions/xep-0060.html
中文翻译文档:http://wiki.jabbercn.org/XEP-0060

三、代码块
创建订阅-推送对象

@property (nonatomic, strong) XMPPPubSub * xmppPubSub;

发布订阅由MT发布,所以此代码块只有订阅功能。

#pragma mark -- 推送、订阅回调

- (void)setupPubSub:(NSString *)MT_Sn
{
    //订阅 推送 模块
    NSString * pubsub_auto_domain_name = @"pubsub.auto.hooca.com.cn";
    XMPPJID * pubsub_jid = [XMPPJID jidWithString:pubsub_auto_domain_name];
    _xmppPubSub = [[XMPPPubSub alloc]initWithServiceJID:pubsub_jid];
    [_xmppPubSub activate:_xmppStream];
    [_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString * myjid = [defaults objectForKey:MYRESJID];
    NSString * subnode = [NSString stringWithFormat:@"mt_%@_notify_node_id",MT_Sn];
    XMPPJID * myresjid = [XMPPJID jidWithString:myjid];
    [_xmppPubSub subscribeToNode:subnode withJID:myresjid];
}

- (void)cancelPubSub:(NSString *)MT_Sn
{
    //订阅 推送 模块
    NSString * pubsub_auto_domain_name = @"pubsub.auto.hooca.com.cn";
    XMPPJID * pubsub_jid = [XMPPJID jidWithString:pubsub_auto_domain_name];
    _xmppPubSub = [[XMPPPubSub alloc]initWithServiceJID:pubsub_jid];
    [_xmppPubSub activate:_xmppStream];
    [_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
   
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString * myjid = [defaults objectForKey:MYRESJID];
    NSString * subnode = [NSString stringWithFormat:@"mt_%@_notify_node_id",MT_Sn];
    XMPPJID * myresjid = [XMPPJID jidWithString:myjid];
//    [_xmppPubSub subscribeToNode:subnode withJID:myresjid];
    [_xmppPubSub unsubscribeFromNode:subnode withJID:myresjid];
}
上一篇 下一篇

猜你喜欢

热点阅读