苹果推送通知反馈服务的PHP脚本每次都会超时,

苹果推送通知反馈服务的PHP脚本每次都会超时,,php,timeout,apple-push-notifications,feedback,Php,Timeout,Apple Push Notifications,Feedback,大家好! 我目前正在为苹果推送通知实施反馈服务。我已经完成了推动部分,并在沙箱和分发应用程序上工作。然而,反馈服务似乎不起作用。。每次我尝试使用我的函数。。这一页写得很好。。只是得到一个暂停 我遵循这个答案来发挥我的作用: 这是我的全部功能代码: function checkFeedbackServer($appBundle,$useDev = TRUE) { $apnsPort = 2195; $apnsCert = keyForApp($appBundle,$useDev);

大家好! 我目前正在为苹果推送通知实施反馈服务。我已经完成了推动部分,并在沙箱和分发应用程序上工作。然而,反馈服务似乎不起作用。。每次我尝试使用我的函数。。这一页写得很好。。只是得到一个暂停

我遵循这个答案来发挥我的作用:

这是我的全部功能代码:

function checkFeedbackServer($appBundle,$useDev = TRUE)
{
    $apnsPort = 2195;
    $apnsCert = keyForApp($appBundle,$useDev);

    if($useDev)
    {
        echo 'FEEDBACK in DEVELOPER MODE <br/>';
        $apnsHost = 'feedback.sandbox.push.apple.com';
    }
    else
    {
        echo 'FEEDBACK in DISTRIBUTION MODE <br/>';
        $apnsHost = 'feedback.push.apple.com';
    }
    $finalPath = 'ssl://' . $apnsHost . ':' . $apnsPort;

    echo 'OPENING STREAM TO -> ' . $finalPath . '<br/>';
    echo 'USING CERT : ' . $apnsCert . "<br/>";


    $stream_context = stream_context_create();
    stream_context_set_option($stream_context, 'ssl', 'local_cert', $apnsCert);

    $apns = stream_socket_client($finalPath, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $stream_context);

    if(!$apns) 
    {
        echo "ERROR $errcode: $errstr\n";
        return;
    }
    else echo 'APNS FEEDBACK CONNECTION ESTABLISHED...<br/>';

    $feedback_tokens = array();    
    $count = 0;

    echo 'error= ' . $error . '<br/>';
    echo 'errorString= ' . $errorString . '<br/>';

    if(!feof($apns))
        echo 'APNS NOT FINISHED <br/>';
    else
        echo 'APNS FINISHED? <br/>';    

    $result = fread($apns, 38);
    echo 'result= ' . $result;
    fclose($apns);
}
然后该功能正常工作。因此,简而言之,我能够打开与生产和开发人员的反馈服务的连接,但一旦我尝试从服务器获取任何数据,我的脚本就会超时


另外,
keyForApp($appBundle,$useDev)
函数只是一个简单的包装器,用于对我的数据库进行查询,以获取正确的证书。我保证它能工作,因为我在向设备发送消息时也在使用它。

解决了它。。结果发现我的端口错了。 澄清:

  • 端口2195用于推送消息
  • 端口2196用于获取反馈

  • 我的坏…)我将两者混合在一起,并在端口2195而不是2196连接到反馈服务器

    @TiagoAmaral-您是否确认过这是否适用于ios 8?你能告诉我你使用反馈服务的解决方案吗?@tamak我会发布我制作的脚本。。。重要的是在火推之间间隔5秒…@TiagoAmaral谢谢你,Tiago,5秒的延迟可以满足我的需要。@tamak我生成此代码>
    $result = fread($apns, 38);
    echo 'result= ' . $result;