开发简单的iOS聊天应用程序时选择哪种方法

时间:2014-01-16 17:33:00

标签: php ios chat

我必须为iOS设备开发一个简单的聊天应用程序。 我试着这样做:

当我运行我的应用程序时,我称之为:

-(void) NewChatMessages{

// Create the asynchronous request.
NSString *chatURL = [NSString stringWithFormat: @"http://www.example.com/chat.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:chatURL] 
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];

[request setHTTPMethod:@"POST"];

NSString *boundary = @"---------------------------234213413243214124321456566";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];

[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSASCIIStringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"myTel\"\r\n\r\n" dataUsingEncoding:NSASCIIStringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@",myTel] dataUsingEncoding:NSASCIIStringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSASCIIStringEncoding]];

[request setHTTPBody:body];

// Create url connection and fire request
chatConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

此请求调用一个php脚本,检查是否有新消息:

$myTel = $_POST['myTel'];

$exist=mysql_query("SELECT * from chat WHERE tel = '$myTel'");
$num_rows = mysql_num_rows($esiste);
if($num_rows > 0){

    //there is a new chat message for me! (maybe it's not only one)
    echo "1";
}
else{

    //there aren't new chat messages for me
    echo "0";
}

当我收到回复(使用URLRequest委托)时,如果我收到1,我会下载新邮件,否则没有。 然后我再次调用此方法(每次收到响应时)创建一个新的URL连接并检查是否有新的聊天消息给我。 这个解决方案工作正常,但我的问题是,这是开发聊天应用程序的正确方法吗? 这个方法是不是递归过多而且没有过多的内存和数据使用?

2 个答案:

答案 0 :(得分:0)

应用程序收到消息通知的最佳方式是服务器在用户收到新消息时向您的应用发送推送通知。这样可以防止您的应用不断点击服务器,只需检查即可。如果这超出了您的php或iOS技能,我建议Parse。很难总结它们,但它是一个非常强大的平台,他们有tutorial that demonstrating确切地知道如何做你的要求。

答案 1 :(得分:0)

尝试套接字编程,而不是基于API的聊天应用程序。 尝试使用本教程。 Networking Tutorial for iOS: How To Create A Socket Based iPhone App and Server

虽然本教程基于Python作为服务器端脚本,但这只是一个想法,您也可以轻松地使用PHP。