将推送通知发送给特定用户 - Laravel

时间:2017-03-26 21:59:17

标签: laravel notifications pusher

在我的laravel应用程序中,我想使用Pusher向特定用户发送通知。

我把这段代码放在我的方法中:

$pusher = App::make('pusher');

$pusher->trigger( 'notification-channel',
                  'notification-event', 
                   array('text' => 'this is a notification'));

return view('home');

并将其放入home.blade.php:

<script src="//js.pusher.com/3.0/pusher.min.js"></script>
<script>

    var pusher = new Pusher("{{env("PUSHER_KEY")}}");
    var channel = pusher.subscribe('notification-channel');
    channel.bind('notification-event', function(data) {
      alert(data.text);
    });

但这会使通知显示给任何用户。 这还有另一个问题,即用户应该只在主页上接收通知!

那么,我应该怎样做才能向特定用户发送通知并让用户从任何页面接收通知?

1 个答案:

答案 0 :(得分:3)

要让用户从任何页面接收,请将您的Pusher代码放入layout.blade.php(如果有的话)。或者所有页面将扩展的任何其他文件。

要使其转到特定用户,您可以通过将用户ID添加到频道来使用该用户ID,例如

'notification-channel:' . $user->id

因此,在您的布局文件中,您可以收听该频道

var user = <?php echo $user ; ?>;
var channel = pusher.subscribe('notification-channel:' + user.id);

虽然只有那么简单的用户可能会收到通知,但您的通知仍然是公开的。意味着任何人都可以操纵他们的身份并接收别人的通知。如果您需要私人通知,可以按照以下说明操作:https://laravel.com/docs/5.4/broadcasting#authorizing-channels