PHP:创建网络推送通知

Posted

技术标签:

【中文标题】PHP:创建网络推送通知【英文标题】:Php: Create web push notification 【发布时间】:2017-07-24 11:09:26 【问题描述】:

我想在 php 中创建一个网络推送通知,但我没有确切的程序。以下是我找到的代码,但它不起作用。

  <?php
   require __DIR__ . '/../vendor/autoload.php';    
   use Minishlink\WebPush\WebPush;



    $subscription = json_decode(file_get_contents('php://input'), true);

    $auth = array(
   'VAPID' => array(
    'subject' => '`enter code here`',
    'publicKey' => '**********',
    'privateKey' => '***********',
   ),
 );

    $webPush = new WebPush($auth);

    $res = $webPush->sendNotification(
    $subscription['endpoint'],
    "Hello!",
     $subscription['key'],
     $subscription['token'],
     true
   );

请提出正确的步骤。

【问题讨论】:

什么不起作用?你有任何错误吗? 可能是gist.github.com/prime31/5675017对你有帮助 是的,有一些内部服务器错误 n 它没有发出通知。 很难说仅仅一个代码 sn-p 有什么问题 - 网络推送可能非常困难。你试过服务吗?例如 Pushpad 有一个 PHP 库:github.com/pushpad/pushpad-php PHP 警告:需要(/home/ambu/web-push-php-example/src/../vendor/autoload.php):无法打开流:/ 中没有这样的文件或目录home/ambu/web-push-php-example/src/send_push_notification.php 在第 2 行 [2017 年 7 月 26 日星期三 16:31:16] PHP 致命错误:require():打开失败需要 '/home/ambu/web- push-php-example/src/../vendor/autoload.php' (include_path='.:/usr/share/php') 在 /home/abc/web-push-php-example/src/send_push_notification.php .这是我在 cammand 提示符中遇到的错误 【参考方案1】:

我花了一些时间自己弄清楚这一点。我正在发布代码,因为它对我有用。从这里生成密钥https://web-push-codelab.glitch.me/

<?php

require_once './vendor/autoload.php';

use Minishlink\WebPush\WebPush;


// array of notifications
$notifications = array(
 array(
        'endpoint' => 'https://fcm.googleapis.com/fcm/send/abcd........', // Chrome
        'payload' => 'Hello',
        'userPublicKey' => 'BFHh..........',
        'userAuthToken' => 'DI............',
    )
);

$auth = array(
    'GCM' => 'AAAAKTK8bp4..............', // deprecated and optional, it's here only for compatibility reasons
    'VAPID' => array(
        'subject' => 'Some Text', // can be a mailto: or your website address
        'publicKey' => 'BGsm2vrV2AMpT.............', // (recommended) uncompressed public key P-256 encoded in Base64-URL
        'privateKey' => 'a89H............', // (recommended) in fact the secret multiplier of the private key encoded in Base64-URL

    ),
);

$defaultOptions = array(
    'TTL' => 300, // defaults to 4 weeks
    'urgency' => 'normal', // protocol defaults to "normal"
    'topic' => 'push', // not defined by default - collapse_key
);

$webPush = new WebPush($auth, $defaultOptions);

$vr = $webPush->sendNotification(
    $notifications[0]['endpoint'],
    $notifications[0]['payload'], // optional (defaults null)
    $notifications[0]['userPublicKey'], // optional (defaults null)
    $notifications[0]['userAuthToken'], // optional (defaults null)
    true // optional (defaults false)
);

【讨论】:

以上是关于PHP:创建网络推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 网络推送通知令牌未获得

PHP 谷歌推送通知

在 PHP 中向特定用户推送通知

Web 推送通知:如何使用 Web 推送 PHP 库?

php按钮推送通知android

Chrome的网络推送通知[关闭]