Gemäß der PHP-Dokumentation auf Predefined Constants, STREAM_CLIENT_PERSISTENT mit der APNS Verbindung mit sollte aktiv zwischen Seite Lasten, die Verbindung halten. Dies ist eine Voraussetzung für die APNS-Verbindung, da es WILL Drosselung Sie, da es jede Verbindung nach dem Senden einer Payload eine potenzielle Denial-of-Service-Angriff betrachtet.
Sollten Sie Probleme mit dem Client außerhalb der verfügbaren Verbindungen haben, sollten Sie Folgendes versuchen, da dies die beste Art ist, mit der ich bisher eine APNS-Verbindung innerhalb von PHP zu bewältigen habe. Dies verwendet den Client von PHPXMLRPC, so dass Sie dieses Paket herunterladen müssen.
<?php
include '../vendors/xmlrpc.inc';
$hostName = 'localhost'; # Your services endpoint here.
$rpcPath = '';
$port = 7077;
if($_GET['action'] == 'provisioning')
{
$echoString = new xmlrpcmsg(
'provision',
array(
php_xmlrpc_encode('appid'),
php_xmlrpc_encode('/path/to/certificate.pem'),
php_xmlrpc_encode('sandbox'),
php_xmlrpc_encode(100)
)
);
$continue = TRUE;
}
if($_GET['action'] == 'notify')
{
$echoString = new xmlrpcmsg(
'notify',
array(
php_xmlrpc_encode('paparazzme'),
php_xmlrpc_encode(array('6bcda...', '7c008...')),
php_xmlrpc_encode(array(array("aps" => array("alert" => "Hello User 1")), array("aps" => array("alert" => "Hello User 2"))))
)
);
$continue = TRUE;
}
if($continue == true)
{
# Create a client handle and send request
$client = new xmlrpc_client($rpcPath, $hostName, $port);
# A little verbose debug
$client->setDebug(2);
# The response
$response = &$client->send($echoString);
# Check if response is good
if (! $response->faultCode())
print "\nReturned string is: " . php_xmlrpc_decode($response->value()) . "\n";
else
print "An error occurred: \nCode: " . $response->faultCode() . " Reason: '" . htmlspecialchars($response->faultString()) . "'\n";
}
?>
QUELLE: How to get started with APNS for iPhone or iTouch
Ich möchte die Zeit in Anspruch nehmen, darauf zu hinweisen, dass, ich habe jede dieser Code nicht getestet, ich habe nicht eine iPhone-Anwendung jetzt zu testen dies mit, so kann ich Ihnen sagen, ob das tatsächlich funktioniert.
Wenn es für Sie möglich ist, würde ich empfehlen, stattdessen Uban Airship zu verwenden, da sie jedem ihrer Kunden 250.000 kostenlose Pushs pro Monat bereitstellen und von dort aus die Verbindung zum APN Server für Sie übernehmen Sie verwenden ihre APIs, um mit Ihren Kunden zu sprechen.