0

Ich versuche herauszufinden, Push-Benachrichtigungen mit PHP zu senden. Das Problem ist, wie Service Worker im Browser registrieren und Benachrichtigung direkt aus PHP senden.Google Cloud Messaging (GCM) mit PHP

Ich habe Probe von Code für einen Teil Back-End:

{"multicast_id":7003820144951503575,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"}]} 

ich denke, es ist:

<?php 
     define('API_ACCESS_KEY', 'SOME KEY'); 
     $registrationIds = array('fK_LVMivilI:APA91bHCXawEoNXc0Avwk4F6iYsshn4mmWX6jysrg8gC9PGA6_AlqWtr1HXhIMonCCUj8syOlsDGTFJVu_T3aPqdMNynqy7SY5L9OBlgolu-7L2a5pwZrB7kN_bdnUPeZHJQ1HT2i2ed'); 
     $msg = array 
     (
      'message' => 'here is a message. message', 
      'title'  => 'This is a title. title', 
      'subtitle' => 'This is a subtitle. subtitle', 
      'tickerText' => 'Ticker text here...Ticker text here...Ticker text here', 
      'vibrate' => 1, 
      'sound'  => 1, 
      'largeIcon' => 'large_icon', 
      'smallIcon' => 'small_icon' 
     ); 
     $fields = array 
     (
      'registration_ids' => $registrationIds, 
      'data'   => $msg 
     ); 

     $headers = array 
     (
      'Authorization: key=' . API_ACCESS_KEY, 
      'Content-Type: application/json' 
     ); 

     $ch = curl_init(); 
     curl_setopt($ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send'); 
     curl_setopt($ch,CURLOPT_POST, true); 
     curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields)); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     echo $result; 

Wenn ich versuche, dieses Skript ausführen, ich die folgende Fehlermeldung erhalten weil im Browser keine Service-Mitarbeiter registriert sind.

Also brauche ich eine Lösung, um Benachrichtigungen mit dynamischen Inhalten mit PHP und Javascript zu senden, wenn nötig.

Alle Ratschläge geschätzt.

+0

überprüfen Sie Ihre Registrierungs-ID. ist es richtig ? –

Antwort

1

Überprüfen Sie diese documentation auf, wie man einen Service Worker bei der Implementierung von Push Messaging registriert. Es wird hier festgestellt, dass es eine Abhängigkeit von einem Service-Mitarbeiter zur Implementierung von Push-Nachrichten für das Web gibt. Der Grund dafür ist, dass der Browser beim Empfang einer Push-Nachricht einen Service Worker starten kann, der im Hintergrund ausgeführt wird, ohne dass eine Seite geöffnet ist, und ein Ereignis absetzt, sodass Sie entscheiden können, wie mit dieser Push-Nachricht verfahren werden soll.

Dies ist der Beispielcode, der dafür verwendet wird.

var isPushEnabled = false; 

… 

window.addEventListener('load', function() { 
var pushButton = document.querySelector('.js-push-button'); 
pushButton.addEventListener('click', function() { 
if (isPushEnabled) { 
unsubscribe(); 
} else { 
subscribe(); 
} 
}); 

// Check that service workers are supported, if so, progressively 
// enhance and add push messaging support, otherwise continue without it. 
if ('serviceWorker' in navigator) { 
navigator.serviceWorker.register('/service-worker.js') 
.then(initialiseState); 
} else { 
console.warn('Service workers aren\'t supported in this browser.'); 
} 
}); 

Weitere Informationen zu Service-Arbeiter, überprüfen diese Anleitungen:

+0

Das Hauptproblem für mich ist, Daten von meinem PHP-Backend zu senden und Servicemitarbeiterbenachrichtigung auszufüllen. – Viktor

Verwandte Themen