Javascript 无法使firebase推送通知适用于web
我正在尝试使用firebase为web设置推送通知。我能够成功发送通知,但我在客户端没有收到通知。我的配置:Javascript 无法使firebase推送通知适用于web,javascript,php,firebase,Javascript,Php,Firebase,我正在尝试使用firebase为web设置推送通知。我能够成功发送通知,但我在客户端没有收到通知。我的配置: <script src="https://www.gstatic.com/firebasejs/7.3.0/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/7.3.0/firebase-messaging.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.3.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.3.0/firebase-messaging.js"></script>
<script>
if('serviceWorker' in navigator) {
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyCxILqE3ZeIJD0S89DF-G2V7P_RgXAbwE",
authDomain: "project-80445.firebaseapp.com",
databaseURL: "https://project-80445.firebaseio.com",
projectId: "project-80445",
storageBucket: "project-80445.appspot.com",
messagingSenderId: "3492394234",
appId: "1:534534534:web:34534545345435"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
const messaging = firebase.messaging();
navigator.serviceWorker.register('./firebase-messaging-sw.js')
.then(function(registration) {
messaging.useServiceWorker(registration);
messaging.requestPermission()
.then(function() {
return messaging.getToken();
})
.then(function(token) {
// update this token at the server
if(! isTokenSentToServer()) {
$.get( 'update-push-token?token=' + token );
setTokenSentToServer(true);
}
messaging.onMessage(function(payload) {
console.log('Message received. ', payload);
});
})
.catch(function(err) {
console.log('Permission denied');
});
});
}
</script>
我希望onMessage
事件侦听器在firebase发出新通知时工作。我试着在一个新的测试环境中设置它,但在那里也不起作用。所以,设置没有问题
客户端生成一个唯一的令牌,将其发送到保存该令牌的服务器,然后使用该令牌发送通知
我如何调试,我遗漏了什么
编辑
我试过了,效果很好。所以,这可能就是我发送请求的方式
<?php
$fields = array (
// 'registration_ids' => $devices,
// 'data' => array (
// "message" => $message,
// "click_action" => $click_action
// )
"notification" => [
"title" => "FCM Message",
"body" => "This is an FCM Message",
],
"to" => $token // key that I generated using messaging.getToken() and saved it in the database
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . "AIzaSyBku4SDFIS9sd0fsdios890Z2269p8A",
'Content-Type: application/json'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );
$result = curl_exec ( $ch );
// echo "<pre>";
// var_dump($result); die();
curl_close ( $ch );