我不知道这个问题有多具体,但我会承担风险。
目前我正在学习Java和Android,我对如何制作即时消息应用感到好奇。
我想有一个与服务器的连接。但除此之外,我什么都不知道。
我的问题是我自己创建一种技术/编程语言/主题需要知道什么?(应用程序具有与whatsapp类似的功能。我认为这是php但我不知道)。
我真的很感激一个广泛的答案,它会向我解释,我会很清楚我要做的事情&学习与学习知道做一个。谢谢!
答案 0 :(得分:0)
简单的Android即时消息应用程序 很简单,因为它不是最终用户的一种应用程序。
这是一个在Android上运行的简单IM应用程序,应用程序向服务器发出http请求,在php和mysql中实现,进行身份验证,注册以及获取其他朋友的状态和数据,然后它与其他应用程序进行通信其他设备通过socket接口。
特性
用户注册
用户认证
按用户名添加新朋友
批准一位朋友
与列表中的朋友联系(当然)
显示在线和离线用户
运行后台服务,以便在应用程序关闭时获取消息。
收到新消息时使用通知区域。
退出应用程序(杀死后台服务)
如何让它运行
有一个名称为Server的文件夹,将Server文件夹下的所有文件复制到Web服务器目录中的文件夹,例如http://192.168.7.5/android_im/
可以访问的android_im(192.168.7.5
是计算机的IP地址。运行apache和mysql,使用本地网络IP地址而不是使用localhost或127.0.0.1)打开index.php并输入数据库连接参数,如主机,用户名,密码等。在index.php的顶部写入error_reporting(0)创建mysql数据库中的表
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;
在socketOperator中设置AUTHENTICATION_SERVER_ADDRESS,它必须是服务器文件夹所在的地址,例如它是http://192.168.7.5/android_im/
(不要使用localhost)
然后使用ADT插件在Eclipse中运行您的应用程序。
可以学习如何安装Android SDK和ADT插件
每个应用程序都会打开一个随机端口(超过10000个)进行监听,需要端口转发才能与应用程序进行通信。可以了解应用程序在“用户”表中打开的端口号是什么。
如果要在同一台计算机上运行应用程序,请删除imService中sendmessage函数中//IP=10.0.2.2行的斜杠。然后你需要端口转发。让我举个例子,例如user1登录模拟器-5554,端口号为12345,user2登录模拟器-5556,端口号为54321
然后发出这些命令
adb -s emulator-5554 forward tcp:12345 tcp:12345
adb -s emulator-5556 forward tcp:54321 tcp:54321