使用 laravel 实施 Firebase 以在 android 应用程序中发送通知
Implementation of Firebase with laravel to send notification in android app
基本上我在 laravel 中为我的 android 应用制作 APIS,所以我想在管理员为他们创建新任务时通知用户,我对设备令牌的生成有点困惑就像那样的过程是什么?我在用户 table 中创建了一个设备令牌字段,但不知道如何生成设备令牌 我想在用户注册我的应用程序时将设备令牌存储在我的数据库中。
这是我的通知功能
`
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);
}
}
`
除了你查询一个Model
, this has little to do with Laravel, because Laravel commonly supports notifications and countless channels; better try to use the 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 时获得的令牌。
每个 device/app 组合(通常称为应用程序实例)都会生成一个唯一的设备令牌,用于接收来自 Firebase 云消息传递的消息。
如果您想要定位此类单个应用程序实例,您可以将此令牌从应用程序发送到服务器端数据库,并在需要向应用程序实例发送消息时从那里检索它。
有关这方面的更多信息,请参阅 accessing the device registration token 上的 Firebase 文档。代码示例中的 sendRegistrationToServer
是代码的占位符,您需要实现该代码才能将令牌发送到 server/database。
基本上我在 laravel 中为我的 android 应用制作 APIS,所以我想在管理员为他们创建新任务时通知用户,我对设备令牌的生成有点困惑就像那样的过程是什么?我在用户 table 中创建了一个设备令牌字段,但不知道如何生成设备令牌 我想在用户注册我的应用程序时将设备令牌存储在我的数据库中。 这是我的通知功能
`
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);
}
}
`
除了你查询一个Model
, this has little to do with Laravel, because Laravel commonly supports notifications and countless channels; better try to use the 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 时获得的令牌。
每个 device/app 组合(通常称为应用程序实例)都会生成一个唯一的设备令牌,用于接收来自 Firebase 云消息传递的消息。
如果您想要定位此类单个应用程序实例,您可以将此令牌从应用程序发送到服务器端数据库,并在需要向应用程序实例发送消息时从那里检索它。
有关这方面的更多信息,请参阅 accessing the device registration token 上的 Firebase 文档。代码示例中的 sendRegistrationToServer
是代码的占位符,您需要实现该代码才能将令牌发送到 server/database。