gpt4 book ai didi

javascript - 使用 PHP 的 Google 云消息传递 (GCM)

转载 作者:行者123 更新时间:2023-12-03 06:06:48 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 PHP 发送推送通知。问题是,如何在浏览器中注册 Service Worker 并直接从 PHP 发送通知。

我得到了后端部分的代码示例:

    <?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;

当我尝试运行此脚本时,出现以下错误:

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

我猜这是因为浏览器中没有注册服务人员。

因此,如果需要,我需要一些解决方案来使用 PHP 和 javascript 发送带有动态内容的通知。

任何建议。

最佳答案

检查这个documentation关于如何在实现推送消息时注册 Service Worker。这里指出,需要有一个 Service Worker 来实现 Web 的推送消息。这样做的原因是,当收到推送消息时,浏览器可以启动一个 Service Worker(该服务在后台运行,无需打开页面),并分派(dispatch)一个事件,以便您可以决定如何处理该推送消息。

这是用于此目的的示例代码。

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.');
}
});

有关 Service Worker 的更多信息,请查看本教程:

关于javascript - 使用 PHP 的 Google 云消息传递 (GCM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com