Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android IM實踐

Android IM實踐

編輯:關於Android編程

IM(Instant Messaging)在Android中可謂運用廣泛。QQ,Wechat,陌陌等應用都可以看作IM實時通訊APP,實時通訊在社交類APP中運用范圍較廣,其功能看起來也是比較cool的。今天我們將研究一下android IM軟件是如何實現的。像IM這種實施通訊軟件,除非公司有比較大的實力和精力,才會自己去整這麼一套框架。對於廣大中小軟件開發者來說,想到比較多的就是開源框架。Opensource對於開發者來說簡直就是福音,對於整個軟件行業也起到了不小的推動性的作用。
Openfire在這種環境下應運而生,而且作為實時通訊類開源框架迅速走紅,下面我們就一起來學習這樣一款拯救宇宙的開源框架,文章的最後會運用Openfire做出一個可以實時通訊的AndroidAPP,如果結合上地理位置再多點UI和交互上的設計提升,這不就是陌陌嗎?YY了一會,覺得挺有趣,那麼 Just do it

 

1. 選擇服務器

對於實時通訊軟件,除了我們的客戶端,服務器端更是關鍵。因為服務器是連接兩個會話的橋梁。根據安裝文檔中,Openfire提供了多個平台的安裝版本。Windows, Linux/Unix。所以支持還是很豐富的。至於服務器的選擇我們可以選擇自己的ECS,本地PC,或者Linux虛擬機。選擇本機安裝的請略過此步驟。
為了更加符合真實的安裝環境,我選擇本地的Linux虛擬機作為服務器環境。方便以後部署到真實的服務器環境中。
在進行下一步之前請先在server上安裝mysql和java。

2. Install openfire

從官網上下載對應的版本,我這裡選擇Openfire_3.9.3 Linux版本,登陸服務器後直接使用wget下載


//下載完成後使用rpm進行安裝

rpm -ivh openfire-3.9.3-1.i386.rpm

Openfire安裝完成後會在/opt目錄下生成openfire/目錄。
安裝完成後就需要進行數據庫的配置,按照官方文檔:

Make sure that you are using MySQL 4.1.18 or later (5.x recommended) ¹.
Create a database for the Openfire tables:
mysqladmin create [databaseName]
(note: databaseName can be something like 'openfire')
Import the schema file from the resources/database directory of the installation folder:
Unix/Linux: cat openfire_mysql.sql | mysql [databaseName]; 
Windows: type openfire_mysql.sql | mysql [databaseName];
Start the Openfire setup tool, and use the appropriate JDBC connection settings.

首先使用mysqladmin create openfire創建名為openfire的數據庫, cd /opt/openfire/resources/database進入openfire的數據庫資源目錄,使用cat openfire_mysql.sql | mysql openfire導入openfire的schema數據庫文件。

3. 啟動Openfire服務

使用rpm安裝完成後的openfire會在/etc/init.d/中自動生成openfire 文件,可以直接在這裡打開服務.

Usage /etc/init.d/openfire {start|stop|restart|status|condrestart|reload}

運行openfire服務:/etc/init.d/openfire start,運行/etc/init.d/openfire status顯示沒有成功運行。
查看log cat /opt/openfire/logs,顯示nohup: cannot run command /opt/openfire/jre/bin/java: No such file or directory,看來openfire找不到java,所以不能成功啟動,但是我們的系統的確已經安裝了java,所以可以通過軟鏈解決:

cd /opt/openfire/jre/bin
cp java java.bak
rm java
ln -s /usr/bin/java java
service openfire start

軟鏈完成之後,再次開啟openfire服務:

[root@iZ23572i0rtZ bin]# /etc/init.d/openfire status
openfire is not running
[root@iZ23572i0rtZ bin]# /etc/init.d/openfire start
Starting openfire:
[root@iZ23572i0rtZ bin]# /etc/init.d/openfire status
openfire is running

status顯示openfire已經成功啟動。通過虛擬機ip訪問9090端口,這時會跳轉到setup界面,只需要通過setup便可以完成相關配置。

配置完成之後即可以登錄自己的管理控制台。

4. Integrate to Android

既然服務器安裝完成,那我們可以著手我們的APP。與Openfire關聯的客戶端XMPP協議庫是smack。摸索一番之後發現,要在Android中使用Smack必須使用ASmack庫。ASmack下載地址。
以實例為主,通過smack實現兩個客戶端之間的即時通信。下載地址

Attention

在AndroidManifest中必須添加Internet permission,否則連接失敗。. 客戶端對客戶端創建聊天時,SID為 username@XXXX, XXXX表示的是服務器名字,我這裡是ECS主機名。

5. Github Repository

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved