74820
## 環境

  * Windows 10
  * Firefox (Developer Edition)
  * php 7.4

## 質問

以下のサイトを参考に、PHPとJS（Svelte）を組み合わせて、WebPushの実装を行おうとしております。  
[WEBアプリでプッシュ通知を実装する](https://zukucode.com/2020/05/webpush-javascript-php.html)

上記サイトで出てきました、web-push-phpというライブラリを利用しようと  
<https://github.com/web-push-libs/web-push-php>

```

    <?php
    require_once 'vendor/autoload.php';
    
    use Minishlink\WebPush\WebPush;
    use Minishlink\WebPush\Subscription;
    
    // ここのキーは https://web-push-codelab.glitch.me/ で取得したものを利用しています
    const PUBLIC_KEY = 'xxxxxxxxxxxxxxxx';
    const PRIVATE_KEY = 'yyyyyyyyyyyyyyy';
    
    $result = [DBから取得した値（JSのpushManager.subscribeで取得された、endpoint, p256dh, authが保存されています）]
    
    $auth = array(
        'VAPID' => array(
            'subject' => 'http://localhost:8080',           // 自身のWEBサイトのURL（'http://localhost'など）
            'publicKey' => PUBLIC_KEY,                      // 取得したPublicKey
            'privateKey' => PRIVATE_KEY,                    // 取得したPrivateKey
        ),
    );
    
    $webPush = new WebPush($auth);
    
    $webPush->sendNotification(
        $result['endpoint'],                  // 登録したendpoint
        'プッシュ通知のテストです。',           // プッシュ通知に表示する文言
        $result['p256dh'],                    // 登録したuserPublicKey
        $result['auth']                       // 登録したuserAuthToken
    );
    
    $webPush->flush();
    
```

しかし、`sendNotification`というメソッドがない、とエラーが発生いたします。

ですので、以下のようにコードを書き換えました。

```

    <?php
    require_once 'vendor/autoload.php';
    
    use Minishlink\WebPush\WebPush;
    use Minishlink\WebPush\Subscription;
    
    // ここのキーは https://web-push-codelab.glitch.me/ で取得したものを利用しています
    const PUBLIC_KEY = 'xxxxxxxxxxxxxxxx';
    const PRIVATE_KEY = 'yyyyyyyyyyyyyyy';
    
    $result = [DBから取得した値（JSのpushManager.subscribeで取得された、endpoint, p256dh, authが保存されています）]
    
    $auth = Subscription::create([
        'endpoint' => $result['endpoint'],
        'publicKey' => $result['p256dh'],
        'authToken' => $result['auth']
        ]);
    
    $webPush = new WebPush();
    $webPush->queueNotification(
        $auth
    );
    
    $report = $webPush->flush();
    var_dump($report);
    
```

しかし、通知は送信されていないのか`var_dump($report);`で空のオブジェクトが返ってきます。

こちらはどのようにして実装するのでしょうか？  
ご存じの方がいらっしゃいましたら、ご教示頂けますと幸いです。

よろしくお願いいたします。
CC BY-SA 4.0
2021-01-21T03:15:31.550
73458
2021-03-22T10:46:42.077
2021-01-21T04:35:29.493
3060
31257
question
php push-notification
PHPでWebPushを送信したい
できましたので、記事を書きました。  
そちらを共有しておきます。  
<https://zenn.dev/nnahito/articles/fd2c8b0ad0d19a>
CC BY-SA 4.0
2021-03-22T10:46:42.077
74820
2021-03-22T10:46:42.077
31257
73458
answer