在 PHP 中推送通知。如何使用它?

Push notifications in PHP. How to use it?

我想在 PHP 中发送推送通知,但我不知道该怎么做。

我成功创建了 Service Worker。

我从这个页面 https://web-push-codelab.appspot.com/ 拿了一把钥匙。但是我不明白他们为什么要给私钥?

然后我测试了我的推送通知,并从此页面发送了一些通知。 但我想从我的 PHP 请求发送推送通知。 此外,我希望它适用于所有可能的 bowsers,此代码仅适用于 google chrome。我们可以用 firefox、safari、opéra 做到这一点吗?

我已经在使用 librairie web-push-php。 (此处可用:https://github.com/web-push-libs/web-push-php) 我 copy/pase 文档中的代码,我替换了我的密钥和消息:`

<?php
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    use Minishlink\WebPush\WebPush;


    $notifications = array(
        array(
            'endpoint' => 'https://updates.push.services.mozilla.com/push/abc...', // Firefox 43+
            'payload' => 'hello !',
            'userPublicKey' => '*****', // base 64 encoded, should be 88 chars
            'userAuthToken' => '*****', // base 64 encoded, should be 24 chars
        ), array(
            'endpoint' => 'https://android.googleapis.com/gcm/send/abcdef...', // Chrome
            'payload' => '{msg:"je fais un test"}',
            'userPublicKey' => '*****',
            'userAuthToken' => null,
        )
    );

    $webPush = new WebPush();

    // send multiple notifications with payload
    foreach ($notifications as $notification) {
        $webPush->sendNotification(
            $notification['endpoint'],
            $notification['payload'], // optional (defaults null)
            $notification['userPublicKey'], // optional (defaults null)
            $notification['userAuthToken'] // optional (defaults null)
        );
    }
    $webPush->flush();

But this code don't work, the page return this :{"multicast_id":6971447349404987967,"success":0,"failure":1,"canonical_ids":0,"results":[ {"error":"InvalidRegistration"}]}`

我也创建了一个 firebase 帐户,但我不知道如何使用它。

而且我还想针对通知。 我想发送像 "xxx commented to your post" 或 "xxx liked to your post" 或 "xxx send to you a friend request"

这样的通知

希望,你能帮助我。

I took a key from this page https://web-push-codelab.appspot.com/. But i don't understand why do they give a private key ?

服务器应该生成一个 public/private 密钥对。 public 键被浏览器用来创建订阅。私钥保留在服务器上,用于加密推送消息。

And i would like also target the notifications. I would like to send the notification like "xxx commented to your post" or "xxx liked to your post" or "xxx send to you a friend request"

在某些时候,您让浏览器通过调用 pushManager.subscribe 来注册订阅(但您的问题中缺少此代码)。 returns 一个解析为订阅的承诺。您应该将此订阅关联到当前经过身份验证的用户。例如,您可以使用 AJAX 将订阅发送到您的服务器并将其与当前经过身份验证的用户一起存储。每当您想通知该用户时,您都可以使用与该用户关联的订阅。

您可能想看看 https://web-push-book.gauntface.com/