【问题标题】:Implementation of Firebase with laravel to send notification in android app使用 laravel 实现 Firebase 在 android 应用中发送通知
【发布时间】:2021-10-19 08:38:04
【问题描述】:

基本上我在 laravel 中为我的 android 应用程序制作 APIS,所以我想在管理员为他们创建新任务时通知用户,我对设备令牌的生成有点困惑,比如那个过程是什么?我在用户表中创建了一个设备令牌字段,但不知道如何生成设备令牌我想在用户在我的应用程序上注册时将设备令牌存储在我的数据库中。 这是我的通知功能

`

public function sendWebNotification()
    {
        $url = 'https://fcm.googleapis.com/fcm/send';
        $FcmToken = User::whereNotNull('device_key')->pluck('device_key')->all();


         $user=User::whereNotNull('device_key')->value('name');

        $serverKey = 'AAAAqLMsLGU:APA91bF0MWybbBdXcLOV9MlS4sLeHgPgSt14xEsWOdLMf76eqvpqIFYGicI6S0TWwUVfjEkrtVOwNympmZIIATCmaYpiSknfROjzhXKjDX86bzxhvltByi3AUUfL-g2laZ9SpG4Uft8F'
        ;

        $data = [
            "registration_ids" => $FcmToken,
            "notification" => [
                "title" => "hello". $user,
                "body" => "sndjjsdjjd",
            ]
        ];
   

       $encodedData = json_encode($data);

        $headers = [
            'Authorization:key=' . $serverKey,
            'Content-Type: application/json',
        ];

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        // Disabling SSL Certificate support temporarly
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $encodedData);

        // Execute post
        $result = curl_exec($ch);

        if ($result === FALSE) {
            die('Curl failed: ' . curl_error($ch));
        }

        // Close connection
        curl_close($ch);

        // FCM response
        dd($result);
    }
}

`

【问题讨论】:

    标签: php android laravel push-notification firebase-cloud-messaging


    【解决方案1】:

    在打算从 Firebase 云消息传递接收消息的每个设备/应用组合(通常称为应用实例)上生成一个唯一的设备令牌。

    如果您想针对此类单独的应用实例,请将此令牌从应用发送到您的服务器端数据库,并在您需要向应用实例发送消息时从那里检索它。

    有关这方面的更多信息,请参阅 accessing the device registration token 上的 Firebase 文档。代码示例中的sendRegistrationToServer 是您需要实现的代码的占位符,以将令牌发送到服务器/数据库。

    【讨论】:

      【解决方案2】:

      除了你查询一个Model,这和Laravel关系不大,因为Laravel普遍支持notifications和无数的channels;最好尝试使用FCM Notification Channel

      composer require kreait/laravel-firebase
      composer require laravel-notification-channels/fcm:~2.0
      

      这需要 laravel-firebase 和 Google 服务帐户 JSON。然后也可以直接使用这些 FCM 类: https://firebase-php.readthedocs.io/en/stable/cloud-messaging.html


      那个(奇怪的名字)“device_key”可能是客户端登录 FCM 时获得的令牌。

      【讨论】:

      • @Cideinit 我不打算修复您的代码,尤其是当它可以轻松安装时。那么使用框架然后忽略框架到底有什么意义呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多