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:
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系統中自己簽署的不能通過驗證的,所以會丟擲錯誤。 於是我網上查找了很多資料,也嘗試過幾種方法,過程都很繁瑣,搞了一通宵都不行。 幸