FCMMessageing.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /* FCM - Messageing */
  3. require_once '../vendor/autoload.php';
  4. putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/axel/configs/narkampen-firebase-adminsdk-k42j5-d3d0354e37.json');
  5. $client = new Google_Client();
  6. $client->useApplicationDefaultCredentials();
  7. $client->addScope('https://www.googleapis.com/auth/firebase.messaging');
  8. $httpClient = $client->authorize();
  9. $hostname = 'localhost';
  10. $username = 'narKampen';
  11. $pass = 'IfRLzj2HJBXA9eei';
  12. $database = 'narKampen';
  13. $conn = new mysqli($hostname, $username, $pass, $database);
  14. if (!$conn) {
  15. die("Connection Failed. ". mysqli_connect_error());
  16. }
  17. mysqli_set_charset($conn,'utf8');
  18. $messageType = $conn->real_escape_string(isset($_POST['type'])?$_POST['type']:"");
  19. $title = $conn->real_escape_string($_POST['title']);
  20. $messageToSend = $conn->real_escape_string($_POST['message']);
  21. $gameId = $conn->real_escape_string($_POST['gameId']);
  22. file_put_contents("FCMMessageDebug.log", "Called $messageType at " . Date(), FILE_APPEND);
  23. if ($messageType === "FCMNextPlayer") {
  24. $playerName = $conn->real_escape_string($_POST['playerName']);
  25. $token = getToken($conn, $gameId, $playerName);
  26. if ($token != null && $token != "") {
  27. file_put_contents("FCMMessageNextPlayerDebug.log", "token: $token title: $title message: $messageToSend", FILE_APPEND);
  28. sendMessage($httpClient, $token, $title, $messageToSend, "NextPlayer");
  29. }
  30. } else if ($messageType === "InviteMessage") {
  31. $i = 0;
  32. while ($_POST['player' . $i] != null) {
  33. $token = getToken($conn, $gameId, $conn->real_escape_string($_POST['player' . $i]));
  34. sendMessage($httpClient, $token, $title, $messageToSend, "GameInvite");
  35. }
  36. } else if ($messageType === "gameFinishedMessage") {
  37. $i = 0;
  38. while ($_POST['player' . $i] != null) {
  39. $token = getToken($conn, $gameId, $conn->real_escape_string($_POST['player' . $i]));
  40. sendMessage($httpClient, $token, $title, $messageToSend, "GameFinished");
  41. }
  42. }
  43. function getToken($conn, $gameId, $playerName) {
  44. $sql = "SELECT messageToken FROM `gamePlayers` INNER JOIN users ON users.id = playerId WHERE gameId = $gameId and users.username = '$playerName'";
  45. $result = $conn->query($sql);
  46. if ($result->num_rows == 1) {
  47. $returnArray = array();
  48. $data = $result->fetch_assoc();
  49. $token = $data['messageToken'];
  50. } else {
  51. echo "No games found for user";
  52. }
  53. return $token;
  54. }
  55. function sendMessage($httpClient, $token, $title, $messageToSend, $tag) {
  56. // Your Firebase project ID
  57. $project = "narkampen";
  58. // Creates a notification for subscribers to the debug topic
  59. $message = [
  60. "message" => [
  61. "token" => $token,
  62. "notification" => [
  63. "body" => $messageToSend,
  64. "title" => $title,
  65. "tag" => $tag,
  66. ]
  67. ]
  68. ];
  69. // Send the Push Notification - use $response to inspect success or errors
  70. $response = $httpClient->post("https://fcm.googleapis.com/v1/projects/{$project}/messages:send", ['json' => $message]);
  71. file_put_contents("FCMMessageDebugResponse.log", print_r($response,true), FILE_APPEND);
  72. file_put_contents("FCMMessageDebugSendMessage.log", print_r($message,true), FILE_APPEND);
  73. }