iOS環(huán)信3.0發(fā)送文字,語音,位置,圖片封裝代碼

因為項目要求岛啸,花了快一個月的時間都在做環(huán)信的即時聊天钓觉,中間也是查查找找,看看別人的代碼坚踩,看看環(huán)信的文檔荡灾,所以現(xiàn)在打算整合一份給大家參考。

項目中只做了文字瞬铸,語音批幌,位置,圖片發(fā)送嗓节∮担看這篇文章的時候默認(rèn)讀者已經(jīng)閱讀了解環(huán)信3.0文檔。

以下代碼都是封裝好的拦宣,可以直接調(diào)用

發(fā)送文字

/**
 *  @param txtStr 消息文字
 *  @param chatBossTel 接收方
 */
#pragma mark 環(huán)信-發(fā)送文字動作
-(void)sendMessage:(NSString *)txtStr
{
  //加入子線程截粗,不會造成卡頓
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //生成消息
        EMTextMessageBody *body=[[EMTextMessageBody alloc]initWithText:txtStr];
        //消息發(fā)送方
        NSString *from=[[EMClient sharedClient]currentUsername];
        
        //消息的接收方
        EMMessage *message=[[EMMessage alloc]initWithConversationID:self.chatBossTel from:from to:self.chatBossTel body:body ext:nil];
        //消息類型是單聊
        message.chatType=EMChatTypeChat;
        
        //發(fā)送消息
        [[EMClient sharedClient].chatManager asyncSendMessage:message progress:^(int progress) {
        } completion:^(EMMessage *message, EMError *error) {
            CLog(@"發(fā)送的消息錯誤原因%@",error);
            if (!error)
            {
                //把消息加入數(shù)組
                [self.messArr addObject:message];
                //計算高度
                [self.messHeightArr addObjectsFromArray:[self calculateMesseageHeightWithCell:@[message]]];
                //滑動到最后一行
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self tableViewScrollToBottom];
                });
            }
        }];
    });
}

發(fā)送語音

#pragma mark環(huán)信-發(fā)送語音
/**
 *  @param localPath   語音地址
 *  @param duration    語音秒數(shù)
 */
-(void)sendVoiceWithLocalPath:(NSString*)localPath
               andDisplayName:(NSString*)displayName
                  andDuration:(int)duration
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //生成語音
        EMVoiceMessageBody *body=[[EMVoiceMessageBody alloc]initWithLocalPath:localPath displayName:displayName];
        //語音的秒數(shù)
        body.duration=self.recordV.duration;
        NSString *from=[[EMClient sharedClient]currentUsername];
        //生成Mes
        EMMessage *message=[[EMMessage alloc]initWithConversationID:self.chatBossTel from:from to:self.chatBossTel body:body ext:nil];
        //設(shè)為單聊
        message.chatType=EMChatTypeChat;
        
        if (duration>1)//大于1秒
        {
            [[EMClient sharedClient].chatManager asyncSendMessage:message progress:^(int progress) {
            } completion:^(EMMessage *message, EMError *error) {
                //加入tab
                [self.messArr addObject:message];
                [self.messHeightArr addObjectsFromArray:[self calculateMesseageHeightWithCell:@[message]]];
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self tableViewScrollToBottom];
                });
            }];
        }
        else
        {
            //停止錄音
            [self.recordV stopRecordVocie];
            //刪除錄音
            [self.recordV deleteVoice];
            dispatch_async(dispatch_get_main_queue(), ^{
                //錄音時間太短請重新
                [WarnWindow HUD:self.view andWarnText:@"錄音時間太短請重新" andXoffset:0 andYoffset:0];
            });
        }
    });
}

發(fā)送位置

#pragma mark 環(huán)信-發(fā)送位置
/**
 *  @param latitude  緯度
 *  @param longitude 經(jīng)度
 *  @param location  位置
 */
-(void)sendLocationWithLatitude:(CGFloat)latitude
                   andLongitude:(CGFloat)longitude
                    andLocation:(NSString*)location
{
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         //生成位置
         EMLocationMessageBody *body=[[EMLocationMessageBody alloc]initWithLatitude:latitude longitude:longitude address:location];
         NSString *from=[[EMClient sharedClient]currentUsername];
         
         //生成Mes
         EMMessage *message=[[EMMessage alloc]initWithConversationID:self.chatBossTel from:from to:self.chatBossTel body:body ext:nil];
         //設(shè)為單聊
         message.chatType=EMChatTypeChat;
         //發(fā)送語音
         [[EMClient sharedClient].chatManager asyncSendMessage:message progress:^(int progress) {
         } completion:^(EMMessage *message, EMError *error) {
             CLog(@"發(fā)送位置的錯誤%@",error);
             if (!error)
             {
                 //加入tab
                 [self.messArr addObject:message];
                //計算高度
                 [self.messHeightArr addObjectsFromArray:[self calculateMesseageHeightWithCell:@[message]]];
                 dispatch_async(dispatch_get_main_queue(), ^{
                     [self tableViewScrollToBottom];
                 });
             }
         }];
    });
}

發(fā)送圖片

#pragma mark 相冊代理 發(fā)送圖片
//從相冊中獲取圖片進(jìn)行發(fā)送,正在發(fā)送時帶了一個菊花
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    //從字典中獲取原始對象
    UIImage *imgV=info[UIImagePickerControllerOriginalImage];
    NSData *data=UIImageJPEGRepresentation(imgV, 0.5);
    //生成圖片的data
    EMImageMessageBody *body=[[EMImageMessageBody alloc]initWithData:data displayName:@"image.png"];
    NSString *from=[[EMClient sharedClient] currentUsername];
    
    EMMessage *message=[[EMMessage alloc]initWithConversationID:self.chatBossTel from:from to:self.chatBossTel body:body ext:nil];
    message.chatType=EMChatTypeChat;
    [self creatHud];//顯示菊花
    //發(fā)送圖片
    [[EMClient sharedClient].chatManager asyncSendMessage:message progress:^(int progress) {
        if (progress==100)
        {
            [hud hide:YES];//隱藏菊花
        }
    } completion:^(EMMessage *message, EMError *error) {
        CLog(@"發(fā)送圖片Error%@",error);
        if (!error)
        {   //存入數(shù)組
            [self.messArr addObject:message];
            [self.messHeightArr addObjectsFromArray:[self calculateMesseageHeightWithCell:@[message]]];
            [self tableViewScrollToBottom];
        }
    }];
    [picker dismissViewControllerAnimated:YES completion:nil];//模態(tài)視圖
}
以上就是發(fā)送文字鸵隧,語音绸罗,位置,圖片的封裝豆瘫,可以直接調(diào)用珊蟀。一些常用類下一次會給你們列出來。
使用到的方法:

環(huán)信3.0項目中用到的一些封裝的類方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末外驱,一起剝皮案震驚了整個濱河市育灸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昵宇,老刑警劉巖描扯,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異趟薄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)典徊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門杭煎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩够,“玉大人,你說我怎么就攤上這事羡铲》渫埃” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵也切,是天一觀的道長扑媚。 經(jīng)常有香客問我,道長雷恃,這世上最難降的妖魔是什么疆股? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮倒槐,結(jié)果婚禮上旬痹,老公的妹妹穿的比我還像新娘。我一直安慰自己讨越,他們只是感情好两残,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著把跨,像睡著了一般人弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上着逐,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天崔赌,我揣著相機(jī)與錄音,去河邊找鬼滨嘱。 笑死峰鄙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的太雨。 我是一名探鬼主播吟榴,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼囊扳!你這毒婦竟也來了吩翻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锥咸,失蹤者是張志新(化名)和其女友劉穎狭瞎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搏予,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熊锭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碗殷。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡精绎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锌妻,到底是詐尸還是另有隱情代乃,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布仿粹,位于F島的核電站搁吓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吭历。R本人自食惡果不足惜堕仔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毒涧。 院中可真熱鬧贮预,春花似錦、人聲如沸契讲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捡偏。三九已至唤冈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間银伟,已是汗流浹背你虹。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彤避,地道東北人傅物。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像琉预,于是被迫代替她去往敵國和親董饰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫圆米、插件卒暂、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,107評論 4 62
  • 外國文學(xué)老師,不得不說她是我在大學(xué)里邊最佩服的老師娄帖,沒有之一也祠。 除了淵博的學(xué)識,并且在課堂上善于用多種方式...
    秋天里愛幻想的貓閱讀 246評論 0 0
  • 第一章 我的青春 青春是一場冒險近速,是不會...
    Hcj檸檬脾氣閱讀 233評論 0 0
  • 關(guān)鍵詞一:目標(biāo) “有了目標(biāo)才有奮斗的動力”诈嘿,“心有多大堪旧,舞臺就有多大”,“目標(biāo)定的高一點(diǎn)兒永淌,即使一時實現(xiàn)不了...
    董會歌閱讀 780評論 0 3