Firebase Cloud Messaging XMPP

Framework Open-Source

Le problème exposé dans ce sujet a été résolu.

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 :ange:

GitHub du projet : https://github.com/baudev/Firebase-Cloud-Messaging-FCM-XMPP

GitHub release PHP MINIMUM VERSION LICENSE

Toutes les remarques, critiques sont les bienvenues !

+1 -0

Le framework est maintenant sur Packagist. Cela permet de l’utiliser avec composer et donc de l’utiliser plus facilement.

La simple commande suffit :

1
composer require baudev/fcm-xmpp

Il faudrait idéalement ajouter des tests unitaires (ajouter un CI sur GitHub comme Travis par exemple) et ajouter une ou deux classes supplémentaires pour quelques fonctionnalités manquantes comme la création automatique de notifications.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte