1. Go to this page and download the library: Download akyos/native-push library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Akyos\NativePushBundle\Model\PushSubjectInterface;
use Akyos\NativePushBundle\Model\PushSubjectTrait;
#[ORM\Entity]
class User implements UserInterface, PushSubjectInterface
{
use PushSubjectTrait; // fournit getPushSubjectId() à partir de getId()
// ...
}
use Akyos\NativePushBundle\SubjectResolver\SubjectResolverInterface;
final class CustomerResolver implements SubjectResolverInterface
{
public function __construct(private CustomerRepository $customers) {}
public function resolve(Request $request): ?PushSubjectInterface
{
return $this->customers->findOneByCookie($request->cookies->get('customer'));
}
}
use Akyos\NativePushBundle\Transport\NativePushOptions;
use Symfony\Component\Notifier\Message\PushMessage;
use Symfony\Component\Notifier\TexterInterface;
// Toucher la notification ouvre l'app sur /orders/42
$texter->send(new PushMessage(
'Commande prête',
'Votre commande #42 est prête',
NativePushOptions::to($user)->url('/orders/42'),
));
// Sans url() : toucher ouvre simplement l'app là où elle en était
$texter->send(new PushMessage('Rappel', 'Pensez à valider', NativePushOptions::to($user)));
use Akyos\NativePushBundle\Notification\PushNotification;
$notifier->send(new PushNotification('Commande prête', 'Votre commande #42 est prête', url: '/orders/42'), $user);
yaml
# config/packages/akyos_native_push.yaml
akyos_native_push:
# iOS, facultatif. Si la section est présente, toutes ses clés sont obligatoires.
apns:
team_id: XXXXXXXXXX # Team ID Apple
key_id: XXXXXXXXXX # Key ID de la clé APNs
private_key: '...' # chemin du .p8, ou son contenu PEM (pratique avec %env()%)
topic: com.exemple.app # bundle ID de l'app iOS
sandbox: true # true = api.sandbox.push.apple.com (builds de dev)
# Android, facultatif.
fcm:
service_account: '...' # chemin du JSON du compte de service, ou son contenu
# Qui possède le téléphone qui s'enregistre (service qui implémente SubjectResolverInterface).
subject_resolver: Akyos\NativePushBundle\SubjectResolver\SecurityUserResolver