Introduction to VPS and Web Technology Development

php通过firebase发送消息

自由vps php

通过创建google服务账号,使用
KreaitFirebase的开源sdk发送消息即可,本示例为定向发送实例(指定设备发送),非订阅模式



<?php

namespace AppSdk;
use KreaitFirebaseFactory;
use KreaitFirebaseMessagingCloudMessage;
use MonologLogger;
use MonologHandlerStreamHandler;
class FireBase
{


    protected $topic_name = "";
    protected $factory = null;
    public function __construct(){
        $this->factory = (new Factory)->withServiceAccount('{
  "type": "service_account",
  "project_id": "86-4973a",
  "private_key_id": "d4c512e3367d8b9c677db4699a6afdc24ff2d0",
  "private_key": "-----BEGIN PRIVATE KEY-----nMIIEvQIKcwggSjAgEAAoIBAQCU3eLbEWmegU+snQ69Q41EClfp75Ka3SzIEn40KAKwT+v/pMyBgz5mLoRktW3MGw5Fw/9O6hRQte2SXnIhnPJ71KLzB8dHL6MoA0hho3qsjUhQzYyDUlB3CB+pVYfAVIggFtLe5XE0i4XZ50ng6XLDeWDpSvb3OuGUoshKtBkh06QVezFsR31LEsh2atgYvI4Qr9X5Jlsn35lBuKCnvsp0AQvoC/x1VsmyFwaOccB1M/wwNkbDdC+lQ0bBza0mtQXA/OCmzJ15zxjonrJDn7jbuFvZLBWxJDoSxzAJwu9nGlFrj3+Y7PrYWCtWmU1gQoEy5GnJhNjd5FjzFhbmdneFHHUXlHAgMBAAECggEAPbAi4R+6kkXIk7xqikzgVX970FpEYaEl5XeOVO5JYHA7nGtImYSe124AS9FI4fL2O5/IDNYAPB/fhi6VEZ6zyiiq631/MA3To3psRgy7g0PwfngjeYmjMWgq4ptASUleLVn34QjYG+uTOGRYcGLXohOSe5YH8QFFXhNInO2FGfkzx9nw/OINH3WPfRdjgTtDApCiH2h04+i7HHoTUjpwFbTe6OTrQDPW7vS1tkg5zgNKuBhnZeorwdp4rnEIcocuePqkd6AlMMvjlPswOzz85+sqkU/PeJIYEyKSbMWAyIulOys4nDwSBch+9e4zRa5sAX1jUJLsC21866JQcfxSezpxvgQKBgQDSg0MnnoyG7MAy/DRvnMeW8Ni0lMo1Dpa6sGfcQ31ZTNhX70ABPtQ3yQj316X6s5dO+IGUL64KITGnAbK+XnsVNZ8aL+I0UaMTz4konyL70qB+IVIhH/HOhrxjOb6q/4j0JhzPB63uz22l3oFYaEnlD6sRQOLzw5eN5wOBclOPzi/gQKBgQC1CJv9h9NFRbBpc5DfN15oGx8It0KWaO76nQJfPSZ37tVvPdl2fg88ddpuR3tE90u6SNiPbfEVqta6EgbrM5RiGDzZ7XMTqmyufn7SJ9NYnmw9pu6ufydcyPHfNrnCfSxrWXJlCaOA/yROSijgI2COXKI7DHAb+HHbHknnI+NzoKcxwKBgDf4oJVbKYACWMP1nLdn6+5T9ULrovW2iq/Fo5Q/3YL4YXX3gu2undQvRownMUFsGLHtjv5ogvy8gKgn4m+NYSZIjljO+CvSA3PY2eCkFmmUffXQi/+f1ntrJZG4W8K5eJ95trUxFITnb/7nHzrzV2+QbyvpOgtPBGFt7/mNuOIbeBAoGALz21n5y0glr0e0gXUUkuSmTwqlw2rlLCBXFCqzO77CQpEkRjkSZIN5DRlWGV62NVIaGM0nbDw7qSMMDYwFAR7vjVw+7WZCBK7FbZBmJaJpAA0v3S3zpTPUU6yPLw+q3Lf5/x2CnfxwOHTyZJUpFjXA49szlfqkYH9xB5dRtKaYwM1UCgYEAzczkf1t8ftEGHhGTvUFHnl4IWXRn1ndUtdz+6tgB0ZUt8mYSM2FDK+ZxnrePO+JYCo5geyLVZzAoBpVIcnXPonm8yAPvSySJUazcnX8I1KfDySWV2tfdDLjPzjm2NJ94pTpyIfO2rA3jP+VXI4zHGynAKgIMw1V+00FepiJ6i41BYs=n-----END PRIVATE KEY-----n",
  "client_email": "firebase-adminsdk-54rqq@daa.iam.gserviceaccount.com",
  "client_id": "116707457228167732757",
  "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-54rqq%40mr486-4973a.iam.gserviceaccount.com"
}',true);
    }

    /**

     * 推送多個設備

     * @param $device_tokens

     * @return bool

     * @throws KreaitFirebaseExceptionFirebaseException

     * @throws KreaitFirebaseExceptionMessagingException

     */
    public function sendRegTokensMessage($device_tokens, $title, $body,$extends = [])
    {
        try {

            $messaging = $this->factory->createMessaging();
            $messageBody = [
                'notification' => [
                    'title' => $title,
                    'body' => $body,
                ],
                "apns" => [
                    "payload" => [
                        "aps" => [
                            "sound" => "default"
                        ]
                    ]
                ],
                'data' => $extends,
            ];
            mLog(
                "firbase_sending_log_params",
                "firebase推送參數",
                ['prams' => $messageBody, 'result' => []]
            );
            $message = CloudMessage::fromArray($messageBody);
            $device_tokens_str = json_encode($device_tokens, 320);
            $ref = $messaging->sendMulticast($message, $device_tokens);
            $sub_tokens = substr($device_tokens_str, 0, 500);
            if ($ref->hasFailures()) {
                foreach ($ref->failures()->getItems() as $k => $failure) {
                    mLog(
                        "firbase_sending_log",
                        "firebase 推送多個設備(deviceToken {$sub_tokens})失敗".json_encode($failure->message()).'|'.json_encode($failure->error()).'|'.json_encode($failure->result()),
                        ['prams' => $device_tokens, 'result' => $ref]
                    );
                }
                return false;
            }
            mLog(
                "firbase_sending_log_success",
                "firebase 推送多個設備(deviceToken {$sub_tokens})成功,message:".json_encode($messageBody),
                ['prams' => $device_tokens, 'result' => $ref]
            );
            return true;
        } catch (KreaitFirebaseExceptionMessagingException $ex) {

            $json_device_tokens = json_encode($device_tokens, 320);
            $sub_tokens = substr($device_tokens_str, 0, 500);
            mLog(
                "firbase_sending_log",
                "firebase 推送多個設備(deviceToken {$sub_tokens})失敗".json_encode( $ex->getMessage()).'|'.json_encode($ex->getTrace()).'|'.json_encode($ex->getPrevious()),
                ['prams' => $device_tokens, 'result' => $ex->errors()]
            );
            return false;
        }
    }
}
使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表