Salut !
Je viens juste présenter un petit travail annexe (de ZONNY) qui m’a occupé ces dernières heures : Firebase Cloud Messaging XMPP.
Il s’agit d’un framework en PHP permettant d’établir une connexion entre le serveur de l’utilisateur et le serveur de Firebase en XMPP. Une partie du code provient du repository sourc7/FCMStream, qui n’est plus maintenu et qui possède donc maintenant quelques bugs (comme des expressions régulières manquantes, des incohérences ou encore des valeurs manquantes). J’ai proposé une PR il y a plusieurs mois et ne voyant aucune activité sur ce repository, j’ai décidé de le forker et de l’améliorer.
Comme vous le savez, une connexion en XMPP possède des avantages non négligeables par rapport au HTTP (comme la transmission quasi instantanée par exemple). Sur Firebase, elle permet surtout depuis une application iOS et Android d’envoyer un message au serveur (Upstream message).
Downstream Messages : serveur à l’appreil à travers FCM
Upstream Messages : appareil au serveur à travers FCM
Les images proviennent de la documentation de XAMARIN.
Exemple d’utilisation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class YOURCLASSNAME extends \FCMStream\Core { public function onSend(string $from, string $messageId, Actions $actions) { // TODO: Implement onSend() method. } public function onReceiveMessage($data, int $timeToLive, string $from, string $messageId, string $packageName, Actions $actions) { // we answer to the message received $message = new \FCMStream\Message(); $message->setTo($from); $message->setMessageId("message_id_test"); $message->setPriority(\FCMStream\Message::PRIORITY_HIGH); $message->setData(array("test" => "Hello World!")); $actions->sendMessage($message); } public function onFail(string $error, string $errorDescription, string $from, string $messageId, Actions $actions) { // TODO: Implement onFail() method. } public function onExpire(string $from, string $newFCMId, Actions $actions) { // TODO: Implement onExpire() method. } } $test = new YOURCLASSNAME('SENDER_ID', 'SERVER KEY', 'debugfile.txt', \FCMStream\helpers\Logs::DEBUG); $test->stream(); |
Il manque encore quelques fonctionnalités, certaines choses sont peut-être mal expliquées et des bugs doivent exister…
N’hésitez pas à créer des PR, issues et mettre une petite étoile
GitHub du projet : https://github.com/baudev/Firebase-Cloud-Messaging-FCM-XMPP
Toutes les remarques, critiques sont les bienvenues !