![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/fcm/ |
Upload File : |
<?php use Google\Auth\Credentials\ServiceAccountCredentials; use Google\Auth\HttpHandler\HttpHandlerFactory; require "vendor/autoload.php"; class FCMNotification { static function getFirebasePrivateKey() { return '{ "type": "service_account", "project_id": "keeview-df67e", "private_key_id": "390eecfe0987771a7b291aeff091473a634d0c01", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC88fx7QMqSE6tZ\n+av/IVhqHdAtGZiR5VyJD9QWHmTN/WXgmlxMcFG/Shn2hQKo3HgGqckLdgUZGvVh\n3q+xA2O5taIOIDZOMT1HDc63I4BdT0mXdXaf1zJu29ZGfHcZgBHBZXoU4QSy8kvs\nPlw/ygWzqsfasK1MTAqEZKY//6JW76sOMQK9Z9QOLxRa+jce4SAkGO2Ye7tWVuik\nVqJoKDJu/PHeXi8+iR05I7RLP28Ou1zGRK95u3IageyRZ63lmQBEuMC+y02mo5Ya\nFtIN370varcRamAfic+W4obldwrZiLw1sS1XEDrsIMRj3+piWz1deno/21FHzmXg\nFOtjT7zHAgMBAAECggEAUHVNWiDrggvdLkna26BT+ZAre2EIbqw4XOdAHZEgxPTw\nYpXo0uYLcYU5DBh02vpTJCc9xOMjZZ7suhntP9gdKdI2KYS/C0n9eZngGm2ENnfS\ncywicQte3wU/ODG9N78pEG1JcMWnThpOiVG+z60UA3+objBJA5Hn8pu3jc4qT5Ew\n/Z7GhmbeJfE+DRIenkKm/lAKOCuIho1KEFD3qXAh2KFA/f5tmB1x1CAJV7CN7JYD\naTBq89uPvWtxouqPw/VzpxuNjgkctzgIgGHDAfB6bBJ76mFoN2jY3xeqWfH0MMwt\n51zmgw8UsQt4JRel64sLoGwCgLCUzlRTvGBk7Py9zQKBgQDRCNuofhbnRjZP+DMo\n9fIXV+g8q/ZORXP0bhggsmpo682wj3lK1iITDh5Vl/XWv/TuPY/qm9HvSC+PiwY8\nyRkXdYKLFTtuQf8IQD2v/+16luI5bsTAXPGsRgrTCQaGH7Ap3BgRHNhj9v+6Yv3P\nLlU/xR3Lu3u4FNIjn4q2KJJp5QKBgQDnZaPWNjjO5+i7hY5YWCeZLKCZSrtZQqS6\nDGoNR8syGjhDFLbNBTxVp0JI22JiZn0Cg3qfphfk62ZDl/dPsFBgrd2MrZsX++IM\niHmo5xbFRYozoKTuO87P32gtAWQL2n6UxEijzXJOnsovk37D8Rd8onOGCLpFRSf8\nlay/J1KxOwKBgC203CLZfzSOu618veME9Cx6gkNR7odq1FHsCMaNfIr4lH84v/LH\nI6g6/BMHKTANxQaa228XJy5FAHFImtKLvjrM7QBwYhBXyeYJ9fMX6NtXRpv8RnUx\nXX6nyhIe9Rg6sZBVmcWUIxSom34ryweUP/uzpDI6CnFTzCcR6YivEmSpAoGBAON5\nbahlwU7VeFrwHlEGyFayImbPqoFDHICxN4g6raxhTjHTqSi/HuLs/CJ3WK53JilU\nazWKqC6oou2L9Nln8Hw6L3PeLntTaJL9juvV0PK5O/Uo1TpFnTeI3fZwSZPFhW5l\nzysICnjzbLt8eb/RwE8LvBlldwglxftugFWiKI6FAoGACrD5OceXr1T0uqzagM2J\nceUc61SGm8T5CCh7gJwmSCfY0dTOnF9Tj59jyBBb7XCpLA+SB2E1OKYR3t4/wim6\nrKKneA0FC9X8DoG6CzbE7lk/EVJusuwGhzvHokcRT0Ajqt/Rwe4ZMlHqiNYAWYEg\nd9zFsmiWJEjpi7DltYVvdkE=\n-----END PRIVATE KEY-----\n", "client_email": "firebase-adminsdk-b1r84@keeview-df67e.iam.gserviceaccount.com", "client_id": "107779151916574009316", "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-b1r84%40keeview-df67e.iam.gserviceaccount.com", "universe_domain": "googleapis.com" }'; } static function getFirebaseMessagingAccessToken() { $credential = new ServiceAccountCredentials( "https://www.googleapis.com/auth/firebase.messaging", json_decode(self::getFirebasePrivateKey(), true) ); $token = $credential->fetchAuthToken(HttpHandlerFactory::build()); return $token["access_token"]; } public static function sendNotificationToTopic($params) { $topic = $params['topic']; $title = $params['title']; $body = $params['body']; $data = isset($params['data']) ? $params['data'] : null; $image = isset($params['image']) ? $params['image'] : null; $badge = isset($params['badge']) ? (int)$params['badge'] : -1; if ($image == null) { $image = "https://lab.daithangminh.vn/general_images/Logo_Keeview_H_50.png"; } $accessToken = self::getFirebaseMessagingAccessToken(); $ch = curl_init( "https://fcm.googleapis.com/v1/projects/keeview-df67e/messages:send" ); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Authorization: Bearer " . $accessToken, ]); $post_content = [ "message" => [ "notification" => [ "title" => $title, "body" => $body, "image" => $image, ], "apns" => [ "payload" => [ "aps" => [ "content-available" => 1, ], ], ], "topic" => $topic, ], ]; if ($badge >= 0) { $post_content["message"]["apns"]["payload"]["aps"][ "badge" ] = $badge; } if ($data !== null) { $post_content["message"]["data"] = $data; } curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_content)); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "post"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $res = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { return [ "success" => false, "error" => "JSON decode error: " . json_last_error_msg(), ]; } else { return $res; } } public static function sendNotificationToDevice($params) { $userFCMToken = $params['userFCMToken']; $title = $params['title']; $body = $params['body']; $data = isset($params['data']) ? $params['data'] : null; $image = isset($params['image']) ? $params['image'] : null; $badge = isset($params['badge']) ? (int)$params['badge'] : -1; if ($image == null) { $image = "https://lab.daithangminh.vn/general_images/Logo_Keeview_H_50.png"; } $accessToken = self::getFirebaseMessagingAccessToken(); $ch = curl_init( "https://fcm.googleapis.com/v1/projects/keeview-df67e/messages:send" ); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Authorization: Bearer " . $accessToken, ]); $post_content = [ "message" => [ "notification" => [ "title" => $title, "body" => $body, "image" => $image, ], "apns" => [ "payload" => [ "aps" => [ "content-available" => 1, ], ], ], "token" => $userFCMToken, ], ]; if ($badge >= 0) { $post_content["message"]["apns"]["payload"]["aps"][ "badge" ] = $badge; } if ($data !== null) { $post_content["message"]["data"] = $data; } curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_content)); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "post"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $res = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { return [ "success" => false, "error" => "JSON decode error: " . json_last_error_msg(), ]; } else { return $res; } } } ?>