MQTTKit使用

1、 ** MQTTKit ** `已經(jīng)不更新 但是基本使用沒問題

> pod 'MQTTKit'   

頭文件

> #import <MQTTKit.h>

#define WEAKSELF  __typeof(&*self) __weak weakSelf = self;

@property (nonatomic, strong) MQTTClient *client;

初始化 鏈接


WEAKSELF

    NSString *clientID = @"測試client - 必須是全局唯一的id ";

    MQTTClient *client = [[MQTTClient alloc] initWithClientId:StrFormat(@"%@", clientID)];

    client.username = @"username";

    client.password = @"password";

    client.cleanSession = false;

    client.keepAlive = 20;

    client.port = 11883;// 端口號 根據(jù)服務(wù)端 選擇

    self.client = client;

    // 鏈接MQTT

    [client connectToHost:@"鏈接的MQTT的URL" completionHandler:^(MQTTConnectionReturnCode code) {

        if (code == ConnectionAccepted) {

            NSLog(@"鏈接MQTT 成功 ??????");

            // 鏈接成功  訂閱相對應(yīng)的主題

        [weakSelf.client subscribe:@"你需要訂閱的主題" withQos:AtLeastOnce completionHandler:^(NSArray *grantedQos) {

            DLog(@"訂閱 返回 %@",grantedQos);

        }];

        }else if (code == ConnectionRefusedBadUserNameOrPassword){

            NSLog(@"MQTT 賬號或驗證碼錯誤");

        } else if (code == ConnectionRefusedUnacceptableProtocolVersion){

            NSLog(@"MQTT 不可接受的協(xié)議");

        }else if (code == ConnectionRefusedIdentiferRejected){

            NSLog(@"MQTT不認(rèn)可");

        }else if (code == ConnectionRefusedServerUnavailable){

            NSLog(@"MQTT拒絕鏈接");

        }else {

            NSLog(@"MQTT 未授權(quán)");

        }

    }];

// 接收消息體

    client.messageHandler = ^(MQTTMessage *message) {

        NSString *jsonStr = [[NSString alloc] initWithData:message.payload encoding:NSUTF8StringEncoding];

        NSLog(@"EasyMqttService mqtt connect success  %@",jsonStr);

    };

訂閱主題


// 方法 封裝 可外部調(diào)用

-(void)subscribeType:(NSString *)example{

    // 訂閱主題

    [self.client subscribe:@"你需要訂閱的主題" withQos:AtMostOnce completionHandler:^(NSArray *grantedQos) {

        NSLog(@"訂閱 返回 %@",grantedQos);

    }];

}

關(guān)閉MQTTKit


-(void)closeMQTTClient{

    WEAKSELF

    [self.client disconnectWithCompletionHandler:^(NSUInteger code) {

        // The client is disconnected when this completion handler is called

        NSLog(@"MQTT client is disconnected");

        [weakSelf.client unsubscribe:@"已經(jīng)訂閱的主題" withCompletionHandler:^{

            NSLog(@"取消訂閱");

        }];

    }];

}

發(fā)送消息


  [self.client publishString:postMsg toTopic:@"發(fā)送消息的主題 根據(jù)服務(wù)端定"  withQos:AtLeastOnce retain:NO completionHandler:^(int mid) {

        if (cmd != METHOD_SOCKET_CHAT_TO) {

            NSLog(@"發(fā)送消息 返回 %d",mid);

        }

    }];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,309評論 0 15
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,964評論 0 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,651評論 1 32
  • 故鄉(xiāng)是一個不大的小城,隱沒于武陵山脈的大山深處,似一個小盆地被大山環(huán)抱著。春天,周圍大山上山花爛漫在碧綠之間,梨樹...
    追夢鈺兒閱讀 954評論 13 14
  • 悄悄的打開筆記本,調(diào)好臺燈的位置,回頭看了一眼睡夢中的大寶,開始了我的隔三差五的點點滴滴的記錄。 自從有了...
    果果長點心吧閱讀 317評論 0 0

友情鏈接更多精彩內(nèi)容