Udało mi się rozwiązać problem. Jak miałem poprzednie błędy to aby sprawdzić w czym problem za komentowałem cały plik firebase-messaging-sw.js. Jak robiłem resztę tutoriala to zawartość tego pliku aż do tego momentu. (po prostu worker był zarejestrowany, ale nic nie robił) Z powrotem od komentowałem kod i to pomogło. Teraz inne pytanie, a bardziej prośba o pomoc od kogoś bardziej ode mnie zorientowanego w temacie. Jak zrobić w moich powiadomieniach aby był on klikalny i znikał po jakimś czasie? Znalazłem komendę od klikania "click_action", ale mimo dodania go do pliku index.php, send.php i firebase-messaging-sw.js, dalej się nie dało kliknąć w to powiadomienie.
Oto kod od send.php i firebase-messaging-sw.js:(pomijam <?php i ?> dla oszczędności miejsca)
define('SERVER_API_KEY', 'AIzaSyAVTw2lpMU2-efb6NehBJQHHmJGKxdTrGI');
require 'DbConnect.php';
$db = new DbConnect;
$conn = $db->connect();
$stmt = $conn->prepare('SELECT * FROM tokens');
$stmt->execute();
$tokens = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($tokens as $token) {
$registrationIds[] = $token['token'];
}
$header= [
'Authorization: Key= ' . SERVER_API_KEY,
'Content-Type: Application/json'
];
$msg=[
'title'=> 'Nowe powiadomienie',
'body' => 'Zmiany nadchodzą',
'icon'=> 'style/img/icon.png',
'image' => 'style/img/d.png',
'click_action' => 'www.google.com'
];
$payload=[
'registration_ids' => $registrationIds,
'data' => $msg,
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://fcm.googleapis.com/fcm/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => $header,
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
importScripts('https://www.gstatic.com/firebasejs/4.9.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.9.1/firebase-messaging.js');
/*Update this config*/
var config = {
apiKey: "AIzaSyDZ56QKkFT33hC3Ee3KyhqwkM0Pmkysg20",
authDomain: "push-v2-7a3d4.firebaseapp.com",
databaseURL: "https://push-v2-7a3d4.firebaseio.com",
projectId: "push-v2-7a3d4",
storageBucket: "",
messagingSenderId: "335978700030"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification here
const notificationTitle = payload.data.title;
const notificationOptions = {
body: payload.data.body,
icon: 'http://localhost/strony/Test2/style/img/icon.png',
image: 'http://localhost/strony/Test2/style/img/d.png',
click_action: 'www.google.com',
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
Jak widać jest już zaaplikowana ta funkcja, ale właśnie nie działa. Mam jeszcze jakąś część kodu dopisać, czy coś innego zmienić?