- vừa được xem lúc

Hướng dẫn bắn notification bằng FCM (FireBase Cloud Messaging) API

0 0 44

Người đăng: Tran Dat

Theo Viblo Asia

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à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ều
  • Tiết kiệm chi phí mua server

Firebase 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ị:

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.

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 Application
  • IOS Application
  • Web 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.

  1. 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 FCM Sau 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 Json
  • Tạo function để sử dụng API của FCM.
  1. Tạo method để bắn message qua cho FCM Code 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 string
  • Legacy 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<string, object> androidMessageDic = new Dictionary<string, object>(); 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<string, object> notification = new Dictionary<string, object>(); Dictionary<string, object> appMessageDic = new Dictionary<string, object>(); 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 APS
  • Cá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 FCM
  • Server chúng ta sẽ bắn notification lên cho FCM
  • FCM sẽ đọc request và xử lý
    • fomart lại định dạng của notification
    • xác định xem device có đang link tới FCM ko
    • FCM 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.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 397

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 738

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 450

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433