Download the PHP package akyos/native-push without Composer

On this page you can find all versions of the php package akyos/native-push. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package native-push

akyos/native-push

Envoyez des notifications push à vos apps iOS et Android depuis Symfony, avec un simple PushMessage.

Le bundle stocke les téléphones de vos utilisateurs et choisit tout seul entre APNs (Apple) et FCM (Google). Il appelle leurs API directement, sans service tiers ni dépendance en dehors de Symfony. Quand on touche la notification, l'app peut s'ouvrir sur la page de votre choix.

Côté mobile, il faut les apps générées par akyos/ux-native-cli avec php bin/console native:init --notification. Ce sont elles qui fournissent le token du téléphone et qui ouvrent la bonne page au toucher.


Sommaire

  1. Démarrage rapide
  2. Identifiants iOS et Android
  3. Enregistrer le téléphone
  4. Envoyer une notification
  5. Ce que le bundle gère tout seul
  6. Commandes
  7. Dépannage
  8. Référence de configuration
  9. Limites

Démarrage rapide

1. Activer le bundle

2. Importer les routes (endpoint d'enregistrement des téléphones)

3. Déclarer le transport Notifier

4. Créer la table des appareils

5. Rendre votre entité destinataire

N'importe quelle entité Doctrine fait l'affaire : un User, un Customer, une Team…

6. Vérifier

Sans identifiants, la commande affiche « non configuré » pour chaque plateforme. C'est normal : ajoutez-les à l'étape suivante.


Identifiants iOS et Android

Les deux plateformes sont facultatives et indépendantes. Vous pouvez n'activer qu'Android, qu'iOS, ou les deux. Les appareils d'une plateforme non configurée sont ignorés : l'envoi ne plante pas, et un avertissement est écrit dans le log.

Rangez les fichiers de clés dans config/push/, et ajoutez ce dossier au .gitignore.

iOS : clé APNs (.p8)

  1. Sur developer.apple.com, allez dans Certificates, Identifiers & Profiles → Keys → « + ».
  2. Cochez Apple Push Notifications service (APNs), validez, puis téléchargez AuthKey_XXXXXXXXXX.p8. Apple ne le propose qu'une seule fois.
  3. Notez le Key ID (les 10 caractères du nom du fichier) et votre Team ID (rubrique Membership details).

sandbox doit correspondre à la façon dont l'app a été installée :

Il faut une Team Apple Developer payante. Une Personal Team gratuite ne peut pas recevoir de push.

Android : compte de service Firebase

  1. Dans la console Firebase, ouvrez Paramètres du projet → Comptes de service.
  2. Cliquez sur Générer une nouvelle clé privée et enregistrez le JSON dans config/push/firebase-service-account.json.

Ne confondez pas les deux fichiers Firebase :

  • le compte de service (ci-dessus) va sur le serveur ;
  • google-services.json va dans l'app Android (native/android/app/), et son nom de package doit être celui de application_id.

Relancez php bin/console native-push:check : chaque plateforme configurée doit afficher OK.


Enregistrer le téléphone

L'app mobile donne son token à la page web. Le contrôleur Stimulus native-push l'envoie ensuite au serveur.

1. Charger le contrôleur

2. L'utiliser dans une page

Au clic, le système demande l'autorisation, l'app renvoie le token, et le contrôleur le poste sur POST /native-push/devices. La plateforme est déduite automatiquement du User-Agent de l'app.

3. À qui appartient le téléphone ?

Par défaut, le téléphone est rattaché à l'utilisateur connecté, s'il implémente PushSubjectInterface. Sans utilisateur connecté, l'endpoint répond 401.

Pour un autre choix, implémentez SubjectResolverInterface et déclarez-le :

Désinscrire à la déconnexion : DELETE /native-push/devices avec {"token": "..."}.

Depuis PHP (sans passer par la page) : $pushDeviceManager->register($user, $token, Platform::Ios).


Envoyer une notification

Ou avec le Notifier et le canal push :

Options de NativePushOptions

Méthode Rôle
to($subject) Envoie à tous les téléphones de ce sujet.
tokens([...], Platform::Ios) Envoie à des tokens précis, sans passer par un sujet.
url('/orders/42') Page ouverte au toucher : un chemin, résolu sur l'URL de l'app, ou une URL complète.
data(['orderId' => 42]) Données personnalisées transmises à l'app.
badge(3) Pastille sur l'icône de l'app.
sound(null) Notification silencieuse. Par défaut, le son est default.

Sur iOS comme sur Android, toucher une notification ouvre toujours l'app : c'est le système qui décide. url() choisit seulement la page affichée.


Ce que le bundle gère tout seul


Commandes

Commande À quoi elle sert
native-push:check Vérifie les identifiants de chaque plateforme, sans rien envoyer.
native-push:devices [--subject='App\Entity\User#1'] Liste les téléphones enregistrés.
native-push:send 'App\Entity\User' 1 [--title] [--body] [--url] [--data=cle=valeur] Envoie à tous les téléphones d'un sujet, comme le ferait votre code.
native-push:test <token> [--platform=ios\|android] [--title] [--body] [--url] Envoie à un token brut et affiche la réponse brute d'Apple ou de Google (pratique pour déboguer).

Tester de bout en bout

Touchez la notification : l'app s'ouvre sur /profile.


Dépannage

Symptôme Cause Solution
Log « Push ignoré : android non configuré » La section fcm (ou apns) est absente. Ajoutez-la (Identifiants).
« Aucun appareil joignable » Le sujet n'a pas de téléphone enregistré, ou sa plateforme n'est pas configurée. Vérifiez avec native-push:devices et native-push:check.
APNs BadDeviceToken Token de build de dev envoyé en production, ou l'inverse. Réglez apns.sandbox : true pour Xcode, false pour TestFlight ou App Store.
APNs DeviceTokenNotForTopic apns.topic ne correspond pas au bundle ID de l'app. Mettez le même bundle ID que dans native.yaml.
iOS : aucun token, rien ne se passe Simulateur, ou app signée sans Team payante. Testez sur un vrai iPhone, signé avec une Team Apple Developer payante.
Xcode : No Account for Team Le compte de cette Team n'est pas chargé dans Xcode, ou ses conditions Apple ne sont pas acceptées. Dans Xcode → Settings → Accounts, la Team doit apparaître sans croix rouge.
Android : build en échec « No matching client found for package name » google-services.json a été créé pour un autre application_id. Ajoutez une app Android avec le bon package dans Firebase, puis téléchargez son google-services.json.
Android : aucun token google-services.json manquant dans native/android/app/. Ajoutez-le, puis rebuildez.
Texter::send() renvoie toujours null Normal quand Messenger est installé : le Texter confie le message au bus. Utilisez native-push:send ou le service texter.transports pour voir le résultat réel.
Endpoint en 401 Aucun utilisateur connecté, ou l'utilisateur n'implémente pas PushSubjectInterface. Connectez-vous, ou configurez un subject_resolver.
Endpoint en 403 Requête qui n'est pas en JSON ou qui vient d'un autre domaine. Utilisez le contrôleur native-push, qui envoie la bonne requête.

Référence de configuration

Un fichier de clé introuvable ne bloque pas le démarrage de l'app : l'erreur apparaît au premier envoi et dans native-push:check.


Limites

Tests

Ils couvrent :


All versions of native-push with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
ext-openssl Version *
doctrine/doctrine-bundle Version ^2.12|^3.0
doctrine/orm Version ^3.0
symfony/console Version ^7.3|^8.0
symfony/framework-bundle Version ^7.3|^8.0
symfony/http-client Version ^7.3|^8.0
symfony/notifier Version ^7.3|^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package akyos/native-push contains the following files

Loading the files please wait ...