iOS和PHP(Web)服务问题之间的通信

时间:2012-05-01 12:17:48

标签: php ios notifications push-notification

好的,我想创建一个与WEB服务通信的iPhone应用程序。但有两点我不清楚。

  1. 当用户按下应用程序中的按钮时,它会通知Web服务该操作,Web服务会将推送通知发送给相应的用户。既然没有。通知必须发送到的用户可能很大,我正在考虑向iPhone应用程序发送响应(确定/错误),然后继续发送通知。换句话说,PHP脚本应该接受请求,响应它并在响应之后继续发送通知,以便iPhone应用程序不必等待服务。

  2. 该服务需要向许多用户发送推送通知。我正在用PHP编写Web服务。那么有更有效的替代PHP吗?或者它是实施服务的最佳方式?

  3. 感谢。

3 个答案:

答案 0 :(得分:2)

对于#1,你可以做这样的事情......

在您的手机应用中使用以下方法:

- (void) send_to_server {
    NSString *urlString = [NSString stringWithFormat:@"http://weburl.com/?variable=%@", variable];

    NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if (theConnection) {
        receivedData = [NSMutableData data];

        if ([[NSString stringWithFormat:@"%@", receivedData] isEqualToString:@"Success"]){
            //Do something here
        }else{
            //Do something else here
        }
    }
}

在PHP中,您可以执行以下操作:

<?php
$variable = $_GET['variable'];
//do what you need to do here...
//Put things into queue or what-not
if ($success){
    echo "Success";
}else{
    echo "Failure";
}
?>

<强>更新

<?php
if (isset($_GET['variable']){
    echo "Success";
    $variable = $_GET['variable'];
    //do what you need to do here...
}else{
    echo "Failure";
}
?>

至于向其他手机发送推送通知,我不知道该怎么做。但我认为PHP对效率没有任何问题。

答案 1 :(得分:1)

我假设关键问题是您要立即响应用户,然后执行其他工作,例如异步发送通知。

我建议使用某种队列系统,比如Gearman(虽然有很多替代品,比如Rabbit)。您可以让您的界面将作业放入Gearman队列,然后编写Gearman Worker以从队列中获取通知任务

您可以在PHP中执行此类工作,但如果您这样做,则可能需要使用Gearman Manager PHP库,因为PHP不是长时间运行的进程的最佳语言。 Gearman Manager为您启动和停止脚本,并使用PHP编写工作人员变得更加容易。

http://gearman.org/?id=gearman_php_extension https://github.com/brianlmoon/GearmanManager

答案 2 :(得分:1)

  1. 听起来很聪明。发送响应并继续处理同一线程中的通知,或者排队作业以在服务器上执行通知。

  2. 有很多人在讨论执行网络服务的不同语言的优点。如果您对PHP最熟悉且性能要求不高,那可能是您的最佳选择。