Tin nhắn đám mây Firebase qua Laravel

Tram Ho

I. Giới thiệu

  • Như tiêu đề, bài viết này mình sẽ giới thiệu cách gửi notification sử dụng Firebase và Laravel, có thể subscribe topic được nhiều device token qua đó nâng cao hiệu năng gửi notification, (một vấn đề mình đã gặp trong dự án vừa qua), sử dụng queue…
  • Sẽ có nhiều bài viết đã hướng dẫn cách subscribe topic theo từng device token, subscribe topic khi vào một action nào đó nhưng ở bài viết này mình sẽ hướng dẫn theo từng case tương ứng khi muốn push vào một thời gian nhất định với lượng device token nhất định theo rule bất kỳ.

II. Hướng dẫn cách làm

1. Cách lấy server key

  • Có rất nhiều bài viết hướng dẫn tạo app trên firebase và bạn có thể làm theo và lấy key trong tab Cloud Messaging (Project Setting) có dạng Server key: AAA..xyz

2. Setup trong Laravel

  • Tạo một interface NotificationService

  • Tạo Một FcmService như sau

  • Ý nghĩa từng hàm

subscribeTopic: Hàm này thực hiện để subscribe topic trên firebase và thực hiện được với nhiều device token.

unsubscribeTopic: Hàm này thực hiện để unsubscribe topic (cancel topic) trên firebase và thực hiện được với nhiều device token.

sendNotification: Dựa trên topic name và device token đã đươc đăng ký, hàm này thực hiên gửi notification dựa vào topic đã được gửi qua hàm subscribeTopic, ý nghĩa của các attrubte

+to: để biết push notification đến topic nafo

+notification: tieu đề và nội dung của notification

+apns (for IOS): các option định sẵn như image chẳng hạn.

+data: thêm các custom attribute.

sendBatchNotification: Hàm này sẽ thực hiện tuần tự subscribeTopic -> sendNotification -> unsubscribeTopic.

  • Tạo file PushNotificationJob như sau:

  • Giờ thì xem cách nó hoạt động thôi !!!
    Giả sử có một bài toán như sau: Gửi notification đến những device có ngày sinh nhật vào ngày 25-10 (Vơi device token được lưu trong bảng User)

III. Kết thúc

  • Trên đây là cách gửi push notification được setup trên server sử dụng laravel. Hi vọng có thể giúp ích được cho các bạn trong qua trình phát triển sản phẩm m/
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo