1. 程式人生 > >Android 通過bmob十分鐘實現即時通訊

Android 通過bmob十分鐘實現即時通訊

我的上一篇部落格簡要的介紹了一下我對即時通訊的一些嘗試,後面還介紹了通過bmob實現即時通訊的方式,上一篇主要是對我的一些經驗的分享,所以我只提取了很簡要的部分講解,考慮到一些讀者可能難以理解,所以為幫助讀者理解,這篇部落格將手把手教學。
總的步驟如下:

  • 註冊並建立應用
  • 獲取應用的application id
  • 匯入即時通訊sdk
  • 初始化sdk
  • 連線伺服器
  • 傳送訊息
  • 接收訊息

先給大家看看效果:
這是和自己通訊時的效果

註冊並建立應用

首先你去bmob平臺註冊一個開發者賬號,流程很簡單,不需要很嚴格的審查。
註冊完成後,自行建立一個應用,填寫的資訊很簡單,沒有特殊要求。

獲取應用的application id

點選進入應用 ->點選設定 ->檢視application id 相信如圖所示,複製一下這個application id 備用
這裡寫圖片描述

匯入即時通訊sdk

對於eclipse使用者來說比較麻煩,需要自行下載demo中lib包,並匯入並編譯。而Android Studio使用者只需做兩步
Step 1:
在專案中的build.gradle中的repositories{}中新增 jcenter()和
maven { url “https://raw.github.com/bmob/bmob-android-sdk/master” }
這裡寫圖片描述
Step 2:
在app中的build.gradle 中新增
compile ‘cn.bmob.android:bmob-im:

[email protected]
compile ‘cn.bmob.android:bmob-sdk:3.5.5’
因為兩者有整合包衝突還需要加上一個

packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/rxjava.properties'
}

結果如下圖所示:
這裡寫圖片描述

初始化sdk

整合好sdk後需要配置一些東西:
首先在你專案中的manifest中註冊一些receiver和service

        <receiver android:name="cn.bmob.newim.core.ConnectChangeReceiver">
            <intent-filter>
                <action android:name="cn.bmob.action.RECONNECT" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
        <service
            android:name="cn.bmob.newim.core.service.BmobIMService"
            android:process=":bmobcore" />
        <service
            android:name="cn.bmob.newim.core.service.NotifyService"
            android:process=":bmobcore" />
        <service android:name="cn.bmob.newim.core.service.ReConnectService" />
        <service android:name="cn.bmob.newim.core.service.HeartBeatService" />

並配置你的密匙:
這裡的application id就是前面我們獲取到的

   <meta-data
            android:name="Bmob_APP_KEY"
            android:value="你自己的application id" />

並配置上一些基礎的許可權,包括網路許可權、WiFi等許可權

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

弄好了這些還需要在application中進行初始化,首先你要新建一個類整合application,
如圖所示:
這裡寫圖片描述

這裡面那個BmobIM.registerDefaultMessageHandler(new ImMessageHandler());是註冊訊息接收類,不理解沒關係,等下會講。別忘記給把application在manifest中宣告。

連線伺服器

一些都準備就緒,現在開始連線伺服器

  BmobIM.connect(et_connect_id.getText().toString(), new ConnectListener() {
                @Override
                public void done(String s, BmobException e) {
                    if (e == null){
                        isConnect = true;
                        Log.i("TAG","伺服器連線成功");
                    }else {
                        Log.i("TAG",e.getMessage()+"  "+e.getErrorCode());
                    }
                }
            });

通過以上程式碼就可以連線伺服器。et_connect_id.getText().toString()傳入的是你連線伺服器的標識id,作為其他使用者與你通訊的標識。在你需要連線伺服器的時候即可呼叫此程式碼

傳送訊息

連線完伺服器後就可以進行訊息的傳送了。

   BmobIMUserInfo info =new BmobIMUserInfo();
                info.setAvatar("填寫接收者的頭像");
                info.setUserId(et_receiver_id.getText().toString());
                info.setName("填寫接收者的名字");
                BmobIM.getInstance().startPrivateConversation(info, new ConversationListener() {
                    @Override
                    public void done(BmobIMConversation c, BmobException e) {
                        if(e==null){
                            isOpenConversation = true;
                            //在此跳轉到聊天頁面或者直接轉化
                                        mBmobIMConversation=BmobIMConversation.obtain(BmobIMClient.getInstance(),c);
                            tv_message.append("傳送者:"+et_message.getText().toString()+"\n");
                            BmobIMTextMessage msg =new BmobIMTextMessage();
                            msg.setContent(et_message.getText().toString());
                            mBmobIMConversation.sendMessage(msg, new MessageSendListener() {
                                @Override
                                public void done(BmobIMMessage msg, BmobException e) {
                                    if (e != null) {
                                        et_message.setText("");
                                    }else{
                                    }
                                }
                            });
                        }else{
                            Toast.makeText(MainActivity.this, "開啟會話出錯", Toast.LENGTH_SHORT).show();
                        }
                  }
            });

在傳送訊息之前必須開啟一個會話,會話需要傳入的引數就是接受者的id、頭像、暱稱。開啟成功後,還需通過BmobIMConversation.obtain將會話轉化後才能進行訊息的傳送。傳送程式碼已貼,其中et_message.getText().toString(),及是你傳送訊息的內容

接收訊息

雖然把訊息發出去了,但是你還是無法看到或者接受其他的訊息,這時候我們需要整合一個訊息接收類,進行訊息的接收


public class ImMessageHandler extends BmobIMMessageHandler{

    @Override
    public void onMessageReceive(MessageEvent messageEvent) {
        super.onMessageReceive(messageEvent);
        //線上訊息
        MainActivity.tv_message.append("接收到:"+messageEvent.getMessage().getContent()+"\n");
    }

    @Override
    public void onOfflineReceive(OfflineMessageEvent offlineMessageEvent) {
        super.onOfflineReceive(offlineMessageEvent);
        //離線訊息
    }
}

這裡自己新建一個類並整合BmobIMMessageHandler,便可接收到其他人發過來的訊息。兩個方法,讀者自行處理資料。結合前面的初始化。把那個BmobIM註冊的訊息接收器改為你自己新建的類即可。按照步驟過來,這個簡單的即時通訊就完成了,我寫的這個demo程式碼量很少,我是直接把bmob的官方文件的主要內容抽離了,想更深層次的學習的,請自行檢視官方文件。
附上demo,有用的請star,感謝

相關推薦

Android 通過bmob分鐘實現即時通訊

我的上一篇部落格簡要的介紹了一下我對即時通訊的一些嘗試,後面還介紹了通過bmob實現即時通訊的方式,上一篇主要是對我的一些經驗的分享,所以我只提取了很簡要的部分講解,考慮到一些讀者可能難以理解,所以為幫助讀者理解,這篇部落格將手把手教學。 總的步驟如下: 註冊並建立應用

android 使用xmpp smack openfire實現即時通訊(一)

介紹: XMPP :XMPP(可擴充套件訊息處理現場協議)是基於可擴充套件標記語言(XML)的協議,它用於即時訊息(IM)以及線上現場探測。  smack:是一個開源包,易於使用的XMPP(jabber)客戶端類庫 openfire :作為伺服器提供服務。 ope

Android WebSocket實現即時通訊/推送

使用java-websocket實現即時通訊/推送模組; 支援即時發訊息和收訊息,訊息型別有開發者自定義;; 該開源專案支援客戶端client和服務端server的配置使用,並提供示例test;   1,Android 客戶端使用需要配置網路許可權; 2,需要寫一個自

5分鐘整合即時通訊功能——環信Android

下載環信demo (Android) 什麼是環信demo 環信demo展示了怎樣使用環信SDK快速建立一個完整的類微信聊天APP。展示的功能包括:環信SDK初始化,登入,登出,註冊訊息接收listener, 傳送訊息。 環信demo原始碼已在github上開源供開發

Android WebSocket實現即時通訊功能

最近做這個功能,分享一下。即時通訊(Instant Messaging)最重要的毫無疑問就是即時,不能有明顯的延遲,要實現IM的功能其實並不難,目前有很多第三方,比如極光的JMessage,都比較容易實現。但是如果專案有特殊要求(如不能使用外網),那就得自己做了,所以我們需要使用WebSocket。 WebS

android 通過監聽edittext實現button的點擊事件

監聽 edittext 如果你沒有接第三方的輸入設備,那麽點擊按鈕只需找到你的button然後:button.performClick();就可以了那麽如果你用到第三方輸入法,有些時候監聽就沒有這麽好使了:以下場景為:外接輸入服務,直接給我丟一串字符,我拿到字符後執行按鈕事件代碼如下: editTe

PHP + Redis 訂閱/發布 實現即時通訊功能

PHP Redis 訂閱/發布 即時通訊 最近比較忙,沒時間更新博客,先暫時記下,待後續補充 Redis Sub/Pub 訂閱/發布 待編輯 PHP + Redis 訂閱/發布 實現即時通訊 待編輯 PHP + Redis 訂閱/發布 實現即時通訊功能

mqtt協議實現即時通訊-activemq nginx.支援JS,JAVA,微信小程式

MQTT協議通訊   簡述:            使用MQTT協議實現後臺推送、及時通訊等功能。本案例實現了web-js端、微信小程式端、Java client端、Java serv

PHP 使用 swoole 實現即時通訊 demo,以及聊天室實現方式

服務端程式碼 ini_set('display_errors', 1); error_reporting(E_ALL); $ws = new swoole_websocket_server("0.0.0.0", 8080); //監聽WebSocket連線開啟事件  

nodejs 實現即時通訊 聊天室demo

需要安裝 nodejs-Websocket 服務端 var ws = require("nodejs-websocket"); console.log("開始建立連線...") var game1 = null,game2 = null , game1Ready =

Spring Websocket+SockJS+STOMP實現即時通訊(零)—— 要點

Spring Websocket+SockJS+STOMP 實現即時通訊(一)—— 疑問解答 Spring Websocket+SockJS+STOMP 實現即時通訊(二)—— 簡單的訊息代理 Spr

Spring Websocket+SockJS+STOMP 實現即時通訊(三)—— ChannelInterceptor與ExecutorChannelInterceptor

ChannelInterceptor: Message被髮送到執行緒池,在傳送動作執行前(後)攔截,發生在當前執行緒。 ExecutorChannelInterceptor: Message被髮送到執行緒池後,線上程池持有的新執行緒中,在Message

Spring Websocket+SockJS+STOMP 實現即時通訊(四)—— MessageChannel

兩種MessageChannel實現 TemporaryReplyChannel 用於接收單個回覆訊息的臨時通道。在整個斷點除錯過程中沒有追蹤到,所以在這裡不詳細說明。 ExecutorSubscribableChannel 正如字面上所表示的這樣Ex

Android學習筆記--基於XMPP的即時通訊

一、常見即時通訊實現 socket openfire+asmack 環信 信鴿 融雲 二、XMPP優勢 1. 開放性 XMPP協議是自由、開放、公開的,並且易於瞭解。而且在客戶端、伺服器、元件、原始碼庫等方面,都已經各自有多種實現。 2.跨平臺 客戶端只要基於X

Spring Websocket+SockJS+STOMP 實現即時通訊(六)—— SubProtocolWebSocketHandler

目錄 WebsocketHandler SubProtocolWebSocketHandler 四個重要成員變數 protocolHandlerLookup 子協議

Spring Websocket+SockJS+STOMP 實現即時通訊(四)—— MessageHandler

目錄 MessageHandler的作用 MessageHandler實現類 兩類MessageHandler有什麼區別? MessageHandler的作用 上一節中我們提到過,E

Spring Websocket+SockJS+STOMP 實現即時通訊(五)—— UserRegistryMessageHandler與NoOpMessageHandler

目錄 UserRegistryMessageHandler 處理來自其它應用服務的登錄檔廣播 定期廣播本地登錄檔 使用場景 使用條件 啟用配

Python爬蟲:分鐘實現從資料抓取到資料API提供

  依舊先從爬蟲的基本概念說起,你去做爬蟲做資料抓取,第一件事想必是去檢視目標網站是否有api。有且可以使用的話,皆大歡喜。   假如目標網站自身不提供api,但今天你心情不好就想用api來抓資料,那

android-使用環信SDK開發即時通訊功能及原始碼下載

最近專案中整合即時聊天功能,挑來揀去,最終選擇環信SDK來進行開發,選擇環信的主要原因是介面方便、簡潔,說明文件清晰易懂。文件有android、ios、和後臺伺服器端,還是非常全的。 環信官網:http://www.easemob.com/ 本篇文章目的主要

Android HTTPS如何10分鐘實現自簽名SSL證書

前言 去年公司內一個應用加了支付寶支付功能,為了保證安全,支付請求連結寫成了https。 由於公司伺服器使用的是的自簽名證書,而在Android系統中自己簽署的不能通過驗證的,所以會丟擲錯誤。 於是我網上查找了很多資料,也嘗試過幾種方法,過程都很繁瑣,搞了一通宵都不行。 幸