Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

PHP client for Apple Push Notification Service (APNs) - Send push notifications to iOS using the new APNs HTTP/2 protocol with token-based (JWT with p8 private key)

License

NotificationsYou must be signed in to change notification settings

edamov/pushok

Repository files navigation

PHP >= 8.1Build StatusLatest Version on PackagistTotal DownloadsCoverage StatusQuality ScoreSoftware LicenseStandWithUkraine

Do you like the library? Please considerdonating to support Ukraine 🇺🇦

Pushok is a simple PHP library for sending push notifications to APNs.

Features

  • Uses new Apple APNs HTTP/2 connection
  • Supports JWT-based authentication
  • Supports Certificate-based authentication
  • Supports new iOS 10 features such as Collapse IDs, Subtitles and Mutable Notifications
  • Uses concurrent requests to APNs
  • Tested and working in APNs production environment

Requirements

  • PHP >= 8.1
  • lib-curl >= 7.46.0 (with http/2 support enabled)
  • lib-openssl >= 1.0.2e

Docker image that meets requirements can be foundhere.Or you can followthis tutorial to create your own docker image with curl with HTTP/2 support.

Install

Via Composer

$ composer require edamov/pushok

Getting Started

Using JWT token. SeeHandling Notification Responses from APNs for more info.

<?phprequire__DIR__ .'/vendor/autoload.php';usePushok\AuthProvider;usePushok\Client;usePushok\Notification;usePushok\Payload;usePushok\Payload\Alert;$options = ['key_id' =>'AAAABBBBCC',// The Key ID obtained from Apple developer account'team_id' =>'DDDDEEEEFF',// The Team ID obtained from Apple developer account'app_bundle_id' =>'com.app.Test',// The bundle ID for app obtained from Apple developer account'private_key_path' =>__DIR__ .'/private_key.p8',// Path to private key'private_key_secret' =>null// Private key secret];// Be aware of thing that Token will stale after one hour, so you should generate it again.// Can be useful when trying to send pushes during long-running tasks$authProvider =AuthProvider\Token::create($options);$alert = Alert::create()->setTitle('Hello!');$alert =$alert->setBody('First push notification');$payload = Payload::create()->setAlert($alert);//set notification sound to default$payload->setSound('default');//add custom value to your notification, needs to be customized$payload->setCustomValue('key','value');$deviceTokens = ['<device_token_1>','<device_token_2>','<device_token_3>'];$notifications = [];foreach ($deviceTokensas$deviceToken) {$notifications[] =newNotification($payload,$deviceToken);}// If you have issues with ssl-verification, you can temporarily disable it. Please see attached note.// Disable ssl verification// $client = new Client($authProvider, $production = false, [CURLOPT_SSL_VERIFYPEER=>false] );$client =newClient($authProvider,$production =false);$client->addNotifications($notifications);$responses =$client->push();// returns an array of ApnsResponseInterface (one Response per Notification)foreach ($responsesas$response) {// The device token$response->getDeviceToken();// A canonical UUID that is the unique ID for the notification. E.g. 123e4567-e89b-12d3-a456-4266554400a0$response->getApnsId();// Status code. E.g. 200 (Success), 410 (The device token is no longer active for the topic.)$response->getStatusCode();// E.g. The device token is no longer active for the topic.$response->getReasonPhrase();// E.g. Unregistered$response->getErrorReason();// E.g. The device token is inactive for the specified topic.$response->getErrorDescription();$response->get410Timestamp();}

Using Certificate (.pem). Only the initilization differs from JWT code (above). Remember to include the rest of the code by yourself.

<?php$options = ['app_bundle_id' =>'com.app.Test',// The bundle ID for app obtained from Apple developer account'certificate_path' =>__DIR__ .'/private_key.pem',// Path to private key'certificate_secret' =>null// Private key secret];$authProvider =AuthProvider\Certificate::create($options);...

Note : Please seethis post about ssl verification

Options to fiddle around. SeeSending Notification Requests to APNs

<?php$client =newClient($authProvider,$production =false);$client->addNotifications($notifications);// Set the number of concurrent requests sent through the multiplexed connections. Default : 20$client->setNbConcurrentRequests(40 );// Set the number of maximum concurrent connections established to the APNS servers. Default : 1$client->setMaxConcurrentConnections(5 );$responses =$client->push();

Testing

$ composertest

Security

If you discover any security related issues, please emailedamov@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please seeLicense File for more information.

About

PHP client for Apple Push Notification Service (APNs) - Send push notifications to iOS using the new APNs HTTP/2 protocol with token-based (JWT with p8 private key)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp