فهرست منبع

NextPlayerMessage

Axel Nordh 5 سال پیش
والد
کامیت
aed86e0363

+ 2 - 0
Assets/Scenes/User.unity

@@ -2620,6 +2620,7 @@ MonoBehaviour:
   EnglishButton: {fileID: 27433609}
   keepSignedIn: {fileID: 286826074}
   errorText: {fileID: 1197443347}
+  firebaseController: {fileID: 35356223}
 --- !u!1 &1190930874
 GameObject:
   m_ObjectHideFlags: 0
@@ -2984,6 +2985,7 @@ MonoBehaviour:
   email: {fileID: 2118721989}
   errorText: {fileID: 108694397}
   registerButton: {fileID: 918568527}
+  firebaseController: {fileID: 35356223}
 --- !u!1 &1336596303
 GameObject:
   m_ObjectHideFlags: 0

+ 14 - 1
Assets/Scripts/Database/OnlineDatabase.cs

@@ -560,7 +560,6 @@ public class OnlineDatabase : MonoBehaviour {
         string postUrl = "narkampen.nordh.xyz/narKampen/dbFiles/PlayerSearch.php?";
         postUrl += "search=" + UnityWebRequest.EscapeURL(searchString);
 
-
         UserNames uNames = new UserNames();
         UnityWebRequest www = UnityWebRequest.Get(postUrl);
         www.SendWebRequest();
@@ -583,4 +582,18 @@ public class OnlineDatabase : MonoBehaviour {
         return uNames.usernamesList;
     }
 
+    internal void SendNextPlayerMessage(int gameId, String nextPlayer)
+    {
+        String filename = "FCMNextPlayer.php";
+        String postUrl = serverUrl + filename;
+
+        postUrl += "?gameId=" + gameId + "&playerName=" + nextPlayer;
+
+        UnityWebRequest www = UnityWebRequest.Get(postUrl);
+        www.SendWebRequest();
+
+        if (www.isNetworkError || www.isHttpError) {
+            Debug.Log(www.error);
+        } 
+    }
 }

+ 0 - 8
Assets/Scripts/Firebase.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 27a9fed6178275f468f12da830c82156
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 5 - 1
Assets/Scripts/GameManagerScript.cs

@@ -221,7 +221,11 @@ public class GameManagerScript : MonoBehaviour {
             Database.Instance.SetCurrentPlayer(GameId, currentPlayer, GetGameMode());
             InformationPanelScript ips = GameObject.Find("InformationPanel").GetComponent<InformationPanelScript>();
             ips.SetCurrentPlayer(currentPlayer);
-            //ResetNewQuestionPosition();
+
+            if (GameMode.Equals("Online")) {
+                OnlineDatabase.Instance.SendNextPlayerMessage(GameId, currentPlayer);
+            }
+
             dialog.Hide();
         });
         dialog.SetOnDecline("", () => dialog.Hide());

+ 14 - 1
Assets/Scripts/Login/Register.cs

@@ -28,6 +28,8 @@ public class Register : MonoBehaviour {
 
     private EventSystem system;
 
+    [SerializeField] GameObject firebaseController;
+
     // Start is called before the first frame update
     void Start() {
         registerButton.onClick.AddListener(RegisterAction);
@@ -99,7 +101,18 @@ public class Register : MonoBehaviour {
         string salt = GetSalt();
         string password = getPassword();
 
-        string postUrl = registerUserUrl + "name=" + UnityWebRequest.EscapeURL(Username) + "&password=" + UnityWebRequest.EscapeURL(password) + "&email=" + UnityWebRequest.EscapeURL(Email) + "&s=" + UnityWebRequest.EscapeURL(salt) + "&did=" + deviceId + "&os=" + UnityWebRequest.EscapeURL(os);
+        string postUrl = registerUserUrl + "name=" + UnityWebRequest.EscapeURL(Username) + "&password=" + UnityWebRequest.EscapeURL(password) + "&email=" + UnityWebRequest.EscapeURL(Email) + "&s=" + UnityWebRequest.EscapeURL(salt) + "&did=" + deviceId + "&os=" + UnityWebRequest.EscapeURL(os) + "&t=";
+
+        StringBuilder sb = new StringBuilder(postUrl);
+        FirebaseStart fs = firebaseController.GetComponent<FirebaseStart>();
+
+        if (fs.MyToken != null && fs.MyToken.Length > 0) {
+            sb.Append(UnityWebRequest.EscapeURL(fs.MyToken));
+            postUrl = sb.ToString();
+        } else {
+            sb.Append("");
+        } 
+
         UnityWebRequest www = UnityWebRequest.Get(postUrl);
         yield return www.SendWebRequest();
 

+ 55 - 0
dbFiles/FCMNextPlayer.php

@@ -0,0 +1,55 @@
+<?php
+require_once '../vendor/autoload.php';
+
+putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/axel/configs/narkampen-firebase-adminsdk-k42j5-d3d0354e37.json');
+
+$client = new Google_Client();
+$client->useApplicationDefaultCredentials();
+$client->addScope('https://www.googleapis.com/auth/firebase.messaging');
+$httpClient = $client->authorize();
+
+/*
+$token = "eMvkzPwkTheSeFLFAE5fho:APA91bE-pb5_0xoMn_Bza6-HrgpI5ufKPZ7zhF4NM_leYdfgYTk4MZJdfpfiKDkijUuQAiK7iaT7rXJucF20uh1GvmgjiomiuQehnDHcjUkGjaSvkQtVfj_s0AtLSP>
+*/
+$hostname = 'localhost';
+$username = 'narKampen';
+$pass = 'IfRLzj2HJBXA9eei';
+$database = 'narKampen';
+
+$conn = new mysqli($hostname, $username, $pass, $database);
+if (!$conn) {
+	die("Connection Failed. ". mysqli_connect_error());
+}
+mysqli_set_charset($conn,'utf8');
+
+$gameId = $conn->real_escape_string($_POST['gameId']);
+$playerName = $conn->real_escape_string($_POST['playerName']);
+
+$sql = "SELECT messageToken FROM `gamePlayers` INNER JOIN users ON users.id = playerId WHERE gameId = $gameId and users.username = '$playerName'";
+
+$result = $conn->query($sql);
+if ($result->num_rows == 1) {
+	$returnArray = array();
+	$data = $result->fetch_assoc();
+	$token = $data['messageToken'];
+} else {
+	echo "No games found for user";
+}
+
+if ($token != null && $token != "") {
+// Your Firebase project ID
+$project = "narkampen";
+// Creates a notification for subscribers to the debug topic
+$message = [
+    "message" => [
+        "token" => $token,
+        "notification" => [
+            "body" => "This is an FCM notification message!",
+            "title" => "FCM Message",
+        ]
+    ]
+];
+// Send the Push Notification - use $response to inspect success or errors
+$response = $httpClient->post("https://fcm.googleapis.com/v1/projects/{$project}/messages:send", ['json' => $message]);
+
+}