PHP code example of akyos / native-push

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/ */

    

akyos / native-push example snippets


// config/bundles.php
Akyos\NativePushBundle\AkyosNativePushBundle::class => ['all' => true],

use Akyos\NativePushBundle\Model\PushSubjectInterface;
use Akyos\NativePushBundle\Model\PushSubjectTrait;

#[ORM\Entity]
class User implements UserInterface, PushSubjectInterface
{
    use PushSubjectTrait; // fournit getPushSubjectId() à partir de getId()

    // ...
}

// importmap.php
'@akyos/native-push' => [
    'path' => '@akyos/native-push/controllers/native_push_controller.js',
],

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);
bash
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
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
bash
php bin/phpunit lib/akyos/AkyosNativePushBundle/tests