2014-03-18 90 views
-4

我不知道這個問題具體有多少,但我會冒這個風險。即時消息android應用程序

目前我正在學習Java和Android,並且我很好奇如何製作即時消息應用程序。
我想有一個連接到服務器。但除此之外我什麼都不知道。

我的問題是我需要知道什麼樣的技術/編程語言/主題來自己創建一個?應用程序的功能類似於whatsapp。我認爲,但我不知道)。

我真的很感激廣泛的答案,這將解釋給我,我會明白,我已經足夠了我要做&學習&知道做一個。謝謝!

+1

你所承擔的風險,但你是相當多的地方。這個問題不是很具體,使得它太廣泛而且不適合該網站。儘管你可能想閱讀http://en.wikipedia.org/wiki/XMPP。這應該讓你開始進一步的研究。 – Bart

+0

Parse.com及其推送通知的功能可能會爲您提供快捷方式並削減處理您自己的服務器的需求。 – cYrixmorten

+0

您正處於開發的網絡搜索階段。尋找教程(我在Google中發現了大量的問題標題作爲搜索參數)。如果並且當您有特定的編程問題和疑問時,請回到SO,我們很樂意提供幫助! – djv

回答

0

簡單的Android即時消息應用程序 簡單,因爲它不是一種應用程序爲最終用戶。

這是一個簡單的IM應用程序運行在Android上,應用程序發出HTTP請求到服務器,在PHP和MySQL,認證,註冊,並得到其他朋友的狀態和數據來實現,那麼它與其他應用程序通信在其他設備上通過套接字接口。

特點 用戶註冊 用戶認證 通過用戶名 添加一個新朋友批准朋友 消息在列表(當然)朋友 顯示在線和離線用戶 以連得消息運行一個後臺服務當應用程序關閉時。 收到新消息時使用通知區域。 退出應用程序(殺死後臺服務) 如何使其運行 有一個文件夾名稱爲Server,將Server文件夾下的所有文件複製到Web服務器目錄中的文件夾,例如可通過http://192.168.7.5/android_im/訪問的android_im (192.168.7.5是它運行Apache和MySQL計算機的IP地址,使用的而不是使用本地主機或127.0.0.1本地網絡IP地址)打開的index.php並輸入數據庫連接參數,例如主機,用戶名,密碼等寫使用error_reporting( 0)的index.php的頂部在MySQL數據庫中socketOperator創建表

CREATE TABLE `friends` (
    `Id` int(10) unsigned NOT NULL auto_increment, 
    `providerId` int(10) unsigned NOT NULL default '0', 
    `requestId` int(10) unsigned NOT NULL default '0', 
    `status` binary(1) NOT NULL default '0', 
    PRIMARY KEY (`Id`), 
    UNIQUE KEY `Index_3` (`providerId`,`requestId`), 
    KEY `Index_2` (`providerId`,`requestId`,`status`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='providerId is the Id of the users who wish to be friend with'; 

CREATE TABLE `users` (
    `Id` int(10) unsigned NOT NULL auto_increment, 
    `username` varchar(45) NOT NULL default '', 
    `password` varchar(32) NOT NULL default '', 
    `email` varchar(45) NOT NULL default '', 
    `date` datetime NOT NULL default '0000-00-00 00:00:00', 
    `status` tinyint(3) unsigned NOT NULL default '0', 
    `authenticationTime` datetime NOT NULL default '0000-00-00 00:00:00', 
    `userKey` varchar(32) NOT NULL default '', 
    `IP` varchar(45) NOT NULL default '', 
    `port` int(10) unsigned NOT NULL default '0', 
    PRIMARY KEY (`Id`), 
    UNIQUE KEY `Index_2` (`username`), 
    KEY `Index_3` (`authenticationTime`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

集AUTHENTICATION_SERVER_ADDRESS,它必須是所在的地址SER版本文件夾的位置,在我們的例子是http://192.168.7.5/android_im/(不要使用localhost)

然後用ADT插件在Eclipse中運行你的應用程序。

可以學會如何安裝Android SDK和ADT插件

每一個應用程序打開一個隨機端口(大於10000)聽,需要端口轉發通信的應用程序。可以知道應用程序在「用戶」表中打開的端口號是什麼。

如果想運行在同一臺計算機上的應用程序,在//IP=10.0.2.2的在imService SendMessage函數行刪除斜槓。那麼你需要端口轉發。讓我給我,例如用戶1爲例登錄模擬器-5554通過端口號12345和user2與端口號登錄模擬器-5556 54321

然後發出以下命令

ADB -s模擬器-5554轉發TCP: 12345 TCP:12345

ADB -s模擬器-5556轉發TCP:54321 TCP:54321