Fcm là gì

Giới thiệu

Tại sự kiện Google I/O tổ chức tháng 5 năm 2016. Google giới thiệu Firebase – một nền tảng đám mây với rất nhiều tính năng nổi bật cho các lập trình viên Mobile như: Firebase Analytics, Firebase Cloud Messaging, Firebase Auth, Realtime Database, Firebase Storage…

Firebase Cloud Messaging (FCM) là một dịch vụ miễn phí của Google. Thông qua FCM, nhà phát triển ứng dụng có thể gửi thông điệp một cách nhanh chóng, an toàn tới các thiết bị cài đặt ứng dụng của họ.

Bạn đang xem: Fcm là gì

Bài viết này sẽ giúp bạn hiểu và sử dụng FCM khi muốn bắn Notification bằng API tới cùng lúc cả Android và IOS.

Ưu điểm của FCM là gì:thời gian triển khai nhanh, config server ko nhiềuTiết kiệm chi phí mua serverFirebase push notification hoạt động như thế nào?

*

Hình trên mô tả luồng hoạt động của Firebase Cloud Messaging.

Server sẽ soạn thảo tin nhắn cần thông báo tới người sử dụng ứng dụng.Firebase sẽ chịu trách nhiệm gửi tới các thiết bị cài đặt ứng dụng.

Như vậy, để các thiết bị có thể nhận được thông điệp, Firebase phải xác đinh thông qua một mã gọi là Token khi thiết bị cài đặt ứng dụng.

Và chúng ta bắt đầu thực hiện nào.

Các bước thực hiện

Chúng ta cần chuẩn bị:

1 tài khoản firebase

Create firebase account

Bước 1: Tạo mới project hoặc import project đã tồn tại.Các bạn truy cập vào trang chủ firebase và tạo mới 1 project.

Xem thêm: The Meaning Of ' Vive La France Là Gì ? Euro Truck Simulator 2

*

sau khi các bạn tạo xong thì các bạn vào mục setting để tạo application mà firebase sẽ làm việc:

*
Ở phần YOUR APP sẽ có các lựa chọn để mình add vào project:

Android ApplicationIOS ApplicationWeb Application

1.Đối với Android thì chúng ta cần các thông số sau:

*

Điền package name ứng dụng của bạn. (nếu bạn không nhớ chính xác thì cần xem trong file AndroidManifest.xml)

để biết thêm về cách config FCM với android thì các bạn theo link sau.

Add IOS App vào tài khoản firebase
*

Chi tiết config IOS

Ở bước này các bạn phải điền chính xác của app nếu ko FCM sẽ ko bắn notification được

3.config FCMSau khi các bạn add App vào FireBase Project rồi thì các bạn qua tab Cloud Messaging

Đối với server thì các bạn cần chú ý tới "Legacy server key "
*
Đối với IOS thì các bạn cần import APNs cetificate vào(bao gồm file .p12 và password)FCM sẽ connect qua Apple center để verify thông tin khi các bạn add IOS App và Cetificate nên các bạn cần đọc kỹ phần hướng dẫn của FCM mà mình có note ở trên
*

Như vậy config ở phía firebase gần như đã hoàn thành, bây giờ chúng ta sẽ đi tạo Method bắn notification.

Code server để bắn notification bằng API

Về phía FCM thì có hướng dẫn cách sử dụng API theo link sau.Còn ở phía server chúng ta sẽ làm gì.

Tạo message dưới dạng JsonTạo function để sử dụng API của FCM.Tạo method để bắn message qua cho FCMCode như sau

public async Task Send(string notification) { var fcmKey = "Legacy server key" var http = new HttpClient(); http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + fcmKey); http.DefaultRequestHeaders.TryAddWithoutValidation("content-length", notification.Length.ToString()); var content = new StringContent(notification, System.Text.Encoding.UTF8, "application/json"); var response = await http.PostAsync("https://fcm.googleapis.com/fcm/send", content); }Note:

notification => đây là 1 object đã được serializable thành stringLegacy server key => các bạn vào tab Cloud Messaging của firebase để lấy (đọc lại phía trên)định dạng cho content gửi đi là "application/json" và được encode bằng UTF8

Ok vần phần server để bắn lên FCM đã xong giờ chúng ta sẽ đi tạo nội dung cho notification

render notification theo từng loại Application

1 với Android

public static string getAndroidMessage(string title, object data, string regId) { Dictionary androidMessageDic = new Dictionary(); androidMessageDic.Add("collapse_key", title); androidMessageDic.Add("title", title); androidMessageDic.Add("data", data); androidMessageDic.Add("to", regId); androidMessageDic.Add("delay_while_idle", true); androidMessageDic.Add("time_to_live", 125); androidMessageDic.Add("dry_run", false); return JsonConvert.SerializeObject(androidMessageDic); }Các parameter cần chú ý như sau:

androidMessageDic.Add("to", regId);Chúng ta sẽ truyền Device_id vào đây để FCM biết là chúng ta sẽ bắn tới device nào.

androidMessageDic.Add("data", data);Đây là nơi chứa custom data chúng ta truyền xuống theo notification

Còn về phía IOS sẽ có khác 1 chút

public static string getAppledMessage(string title, object data, string regId) { Dictionary notification = new Dictionary(); Dictionary appMessageDic = new Dictionary(); notification.Add("title", title); notification.Add("body", "Ấn vào để xem"); notification.Add("sound", "adcmover_notify_sound.m4r"); notification.Add("mutable_content", true); notification.Add("badge", 1); appMessageDic.Add("priority", "high"); appMessageDic.Add("notification", notification); appMessageDic.Add("data", data); appMessageDic.Add("to", regId); return JsonConvert.SerializeObject(appMessageDic); }Do phía bên IOS thì các notification đều được fomart về kiểu APS nên chúng ta phải config đúng theo như hướng dẫn của firebase:

Các thông tin của notification được thiết lập trong key "notification", FCM sẽ dựa vào đây để fomart lại về định dạng của APSCác custom data sẽ được lưu bằng key "data"

Như vậy là phía bên server đã xong còn phía client (Android và IOS ) cần làm gìCác thí chủ vui lòng đọc ở đây:

Các bạn note lại qu trình như này.

Client sẽ đăng ký device_id(android), device_token(IOS) lên cho FCMServer chúng ta sẽ bắn notification lên cho FCMFCM sẽ đọc request và xử lýfomart lại định dạng của notificationxác định xem device có đang link tới FCM koFCM tiến hành bắn notification tới device_id chỉ định với fomart phù hợp

Như vậy là xong chúc các bạn thành công.