Giới thiệu gem fcm (Firebase Cloud Messaging)

Gem FCM cho phép ứng dụng backend của bạn gửi thông báo cho các devise Android hoặc iOS thông qua Firebase Cloud Messaging.

Cài đặt

$ gem install fcm

hoặc include dòng sau vào Gemfile

gem "fcm"

Yêu cầu

Đối với Android bạn sẽ cần các thiết bị chạy 2.3 (hoặc mới hơn) và có cài đặt ứng dụng Google Play Store, hay chạy Andorid 2.3 với Google APIs. Tất cả các thiết bị iOS đều được hỗ trợ.

Đối với Ruby, sử dụng một trong các phiên bản sau:

  • 2.0.0
  • 2.1.9
  • 2.2.5
  • 2.3.1

Sử dụng

Để server của bạn gửi message đến một hay nhiều thiết bị, điều đầu tiên bạn cần làm đó là khởi tạo một lớp FCM với key server Firebase của bạn, và sau đó gọi phương thức send trong đó, và đưa vào đó 1 hay nhiều (nhỏ hơn 1000) registration tokens hay là 1 mảng strings. Bạn có thể gửi kèm thêm các tùy chọn khi gửi thông điệp HTTP như data hoặc time_to_live như một hash thông qua tùy chọn thứ hai để send.

Ví dụ:

require 'fcm'

fcm = FCM.new("my_api_key")
# you can set option parameters in here
#  - all options are pass to HTTParty method arguments
#  - ref: https://github.com/jnunemaker/httparty/blob/master/lib/httparty.rb#L29-L60
#  fcm = FCM.new("my_api_key", timeout: 3)

registration_ids= ["12", "13"] # an array of one or more client registration tokens
options = {data: {score: "123"}, collapse_key: "updated_score"}
response = fcm.send(registration_ids, options)

Device Group Messaging

Với device group messaging, bạn có thể gửi một tin nhắn duy nhất đến nhiều thiết bị chạy một ứng dụng thuộc một nhóm. Thông thường, "nhóm" là một tập hợp các thiết bị khác nhau mà thuộc về một người dùng duy nhất. Tuy nhiên, một nhóm cũng có thể đại diện cho một nhóm các thiết bị mà chức năng ứng dụng có tính tương quan cao. Để sử dụng tính năng này, trước tiên bạn cần khởi tạo một lớp FCM.

Tạo Key thông báo cho nhóm thiết bị

Sau đó, bạn sẽ cần notification key, cái mà bạn có thể tạo cho key_name , đó là tên duy nhất cho mỗi ứng dùng trong các tường hợp bạn có nhiều ứng dụng cho cùng một project_id. Điều này đảm bảo rằng các thông báo chỉ đến các ứng dụng mục tiêu theo dự định. Các phương thức tạp sẽ làm điều này và trả về mã thông báo notification_key, đại diện cho nhóm thiết bị, trong gói trả về:

response = fcm.create(key_name: "appUser-Chris",
                project_id: "my_project_id",
                registration_ids: ["4", "8", "15", "16", "23", "42"])

Send to Notification Key

Bây giờ bạn có thể gửi một tin nhắn đến một notification_key cụ thể thông qua phương thức send_with_notification_key. Điều này cho phép các máy chủ chỉ gửi dữ liệu duy nhất hoặc/và thông báo kích thước cho trường hợp nhiều ứng dụng (thường trên nhiều thiết bị) thuộc sở hữ của một người sử dụng duy nhất (thay vì gửi một số thẻ đăng ký). Lưu ý: số lượng tối đa của các thành viên cho notification_key là 20.

response = fcm.send_with_notification_key("notification_key",
            data: {score: "3x1"},
            collapse_key: "updated_score")

Add/Remove Registration Tokens

Bạn có thể thêm/ bớt registration Tokens đăng ký đến/từ một số notification_key cụ thể của một project_id. Xem ví dụ:

response = fcm.add(key_name: "appUser-Chris",
                project_id: "my_project_id",
                notification_key:"appUser-Chris-key",
                registration_ids:["7", "3"])
 response = fcm.remove(key_name: "appUser-Chris",
                project_id: "my_project_id",
                notification_key:"appUser-Chris-key",
                registration_ids:["8", "15"])

Send Messages to Topics

FCM topic messaging cho phép máy chủ ứng dụng của bạn gửi tin nhắn cho nhiều thiết bị đã chọn tham gia vào cùng một chủ đề cụ thể. Dựa trên các xuất bản/ đăng ký mô hình, tin nhắn chủ đề hỗ trợ đăng ký không giới hạn cho mỗi ứng dụng. Gửi đến một chủ đề là rất giống gửi đến một thiết bị cá nhân hay một nhóm người sử dụng, điều đó có nghĩa là bạn có thể sử dụng fcm.send_with_notification_key() nơi notification_key nối với biểu diễn "/topics/[a-zA-Z0-9-_.~%]+":

response = fcm.send_with_notification_key("/topics/yourTopic",
            data: {message: "This is a FCM Topic Message!")

hoặc bạn có thể sử dụng trong helper:

response = fcm.send_to_topic("yourTopic",
            data: {message: "This is a FCM Topic Message!")

Trên đây mình đã giới thiệu qua về việc gửi một thông báo từ server đến các thiết bị client sử dụng app trên nền tảng Android và iOS một cách căn bản nhất. Mong rằng sẽ giúp mọi người hình dung được cách gửi một thông báo với các options ở trên.


All Rights Reserved