Closed cedriclombardot closed 8 years ago
Hi,
Can you show php code which crashed?
This is my php class :
<?php
namespace My\PushBundle\Pusher;
class ApnsPusher
{
private $root_dir;
private $application_name;
private $private_key_pass;
public function __construct($root_dir, $application_name, $private_key_pass)
{
$this->root_dir = $root_dir;
$this->application_name = $application_name;
$this->private_key_pass = $private_key_pass;
}
public function push($use_prod, $message, array $tokens, $url, \Closure $onSuccess, \Closure $onFailure, Contact $contact = null, $inAppNotificationTitle = null)
{
$apn = $this->init($use_prod);
$payload = apn_payload_init();
apn_payload_set_array($payload, array(
'body' => $message,
'sound' => 'default',
'badge' => 1,
'tokens' => $tokens,
));
apn_payload_add_custom_property($payload, 'target', $url);
if (null === $inAppNotificationTitle) {
$inAppNotificationTitle = str_replace("\n", " ", $message);
}
if ($inAppNotificationTitle) {
$inAppNotificationTitle = str_replace("%contact%", $contact->getFullname(), $inAppNotificationTitle);
apn_payload_add_custom_property($payload, 'inAppNotificationTitle', $inAppNotificationTitle);
}
if ($contact) {
apn_payload_add_custom_property($payload, 'contact_id', $contact->getId());
}
$error = NULL;
$errcode = 0;
// Opening Apple Push Notification Service connection...
if (apn_connect($apn, $error, $errcode)) {
// and if ok, try send push notification....
if (!apn_send($apn, $payload, $error, $errcode)) {
$onFailure($error);
} else {
$onSuccess();
}
} else {
throw new \RuntimeException('Could not connected to Apple Push Notification Servece: ' . $error, 1);
}
apn_close($apn);
apn_payload_free($payload);
apn_free($apn);
}
private function init($use_prod = true)
{
// APNS contex
$apn = apn_init();
apn_set_array($apn, [
'certificate' => $this->root_dir.'/config/apns/'.$this->application_name.'/Push'.($use_prod ? 'Production':'').'Cert.pem',
'private_key' => $this->root_dir.'/config/apns/'.$this->application_name.'/Push'.($use_prod ? 'Production':'').'Key.pem',
'private_key_pass' => $this->private_key_pass,
'mode' => $use_prod ? APN_PRODUCTION : APN_SANDBOX,
]);
return $apn;
}
}
I've found why this error message appear : it' because my certificate was became invalid. I think could be good to throw an exeption in this case
Fixed in v2.0.0
Hi,
I ve an error when i execute push script on my new server, could you help me to debug please :