【问题标题】:send pusher notification to specific user - Laravel向特定用户发送推送通知 - Laravel
【发布时间】:2017-08-19 11:48:31
【问题描述】:

在我的 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);
    });

但这会使通知显示给任何用户。 这还有一个问题,就是用户只能在主页上才能收到通知!

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

【问题讨论】:

    标签: laravel notifications pusher


    【解决方案1】:

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

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

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

    所以在你的布局文件中你收听那个频道

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

    虽然只有具有这种简单性的用户可能会收到通知,但您的通知仍然是公开的。这意味着任何人都可以操纵他们的 id 并接收其他人的通知。如果您想要私人通知,可以按照此处的说明进行操作:https://laravel.com/docs/5.4/broadcasting#authorizing-channels

    【讨论】:

    • 尝试这个,我得到了这个错误:Pusher.php 第 257 行中的 PusherException:无效的频道名称通知频道:22 @EddyTheDove
    • 我的错,尝试用点替换冒号。所以它变成了'notification-channel.' . $user-&gt;id;
    • 频道命名约定不允许使用“:”字符。因此,我通过将频道名称更改为 'notification-channel-' 来修复此错误。 $user->id @EddyTheDove
    • 是的,我注意到了。这就是为什么我建议使用点来代替。但是,在使用 laravel 5.4 时,我使用冒号作为我的频道。比如user:update等等……
    • 不管你使用什么,都可以通过Auth::user() 或简单地将其从控制器传递给视图来获取用户。您实际上并不需要用户本身。您可以只传递一个带有用户 ID 的变量。就像在您的控制器中一样,您可以 return view('viewname', ['userid' =&gt; 1]);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2021-07-26
    相关资源
    最近更新 更多