本文主要讲述使用firebase cloud-message功能在服务端的集成和开发指导。以使用firebase-php的sdk为例子描述该过程。

0x01 SDK集成
firebase没有提供官方的php版本的SDK,貌似google对php不太友好啊! 去github寻找相关sdk,发现这个sdk(GitHub - kreait/firebase-php: Unofficial Firebase Admin SDK for PHP)更新频次和star数量都不错。

项目根目录中使用如下命令安装

composer require kreait/firebase-php

0x02 使用SDK
登录 firebase 控制台 https://console.firebase.google.com/ 找到 项目凭证(credentials)文件。

选中 项目进入项目控制台,在左侧顶部Project Overview一级菜单中,点击右侧齿轮进入 Project Setting。在Service Accounts标签中点击“Generate new private key” 生成凭证文件。

其内容格式如下:

{
    "type": "service_account",
    "project_id": "sphere-gps",
    "private_key_id": "xxxx",
    "private_key": "xxxx",
    "client_email": "xxxx",
    "client_id": "xxxx",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-on0ag%40sphere-gps.iam.gserviceaccount.com"
}

注意保密,这是平整文件,一旦泄露只能重新生成,每次生成都会覆盖旧文件。

使用刚刚生成的配置文件配置

use Kreait\Firebase\Factory;

$factory = (new Factory)->withServiceAccount('/path/to/firebase_credentials.json');

0x03发送消息

class FirebaseAdmin {

    private static function getMessaging()
    {
        $factory = (new Factory)->withServiceAccount(base_path('cert/firebase_credentials.json'));
        return $factory->createMessaging();
    }

    public static function sendBroadcastNotice($title, $body, $imageUrl=null){
        $message = CloudMessage::withTarget('topic', 'jyrc/common')->withData([
            'key1' => 'value1',
            'key2' => 'value2'
        ]);
        $messaging = self::getMessaging();
        $messaging->send($message);
    }
}

0x04 总结

Firebase支持 主题消息、单播多播和广播消息、自定义消息声音、一次多条等众多功能,具体需求可以参考SDK文档。(SDK文档 https://firebase-php.readthedocs.io/)
相比国内个厂商各自为战的状态,firebase很好的解决了应用内消息推送问题,对开发者及其友好。

资料索引:

Tags: android, firebase

Related Posts:

Leave a Comment