antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

Anton Dobkin
Author

Share


Tags


php-apn - PHP расширение для отправки Apple Push уведомлений

Anton DobkinAnton Dobkin

Данное расширение это обвязка над библиотекой libcapn. С его помощью вы можете легко отправлять Apple Push уведомления на iOS и OS X устройства.

Для работы расширения необходим PHP 5.3 или выше и установленная библиотека libcapn.

Сборка расширения под Unix

Для сборки расширения необходимо установить:

1) клонируем исходные тексы с GitHub:

git clone https://github.com/adobkin/php-apn

2) Переходим в каталог с исходными текстами:

cd php-apn

3) Компилируем:

phpize ./configure make

4) Устанавливаем:

sudo make install

5) После установки необходимо прописать расширение в php.ini:

extension=apn.so

также, в Linux, из каталога с исходными файлами можно скопировать файл apn.ini в /etc/php.d (/etc/apache/php.d), если такой каталог есть у вас в системе.

6) Проверяем:

php -m

в выводе вы должны увидеть расширение apn

Пример отправки уведомления

// APNS contex
$apn = apn_init();
apn_set_array($apn, array(  
      'certificate' => 'apns-dev-cert.pem',
      'private_key' => 'apns-dev-key.pem',
      'tokens' => array (
          'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
          'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ',
          'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
      )
  ));

// Notification Payload context
$payload = apn_payload_init();
apn_payload_set_array($payload, array(  
      'body' => 'This push was sent using PHP && php-apn',
      'sound' => 'default',
      'badge' =>34
));
apn_payload_add_custom_property($payload, 'my_string_property', 'string');  
apn_payload_add_custom_property($payload, 'my_int_property', 20);

$error = NULL;
// Opening Apple Push Notification Service connection...
if(apn_connect($apn, APN_SANDBOX, $error)) {  
    // and if ok, try send push notification....
    if(!apn_send($apn, $payload, $error)) {
        echo 'Could not sent push notification: ' . $error;
    }
} else {
    echo 'Could not connected to Apple Push Notification Service: ' . $error;
}

apn_close($apn);  
apn_payload_free($payload);  
apn_free($apn);  
Anton Dobkin
Author

Anton Dobkin

Comments