12/08/2018, 18:05

Firebase Cloud Message (Phần 2)

Giới thiệu Như phần 1 mình đã giới thiệu cho các bạn một số thông tin cơ bản về Firebase Cloud Message , Nếu các bạn chưa đọc về phần 1 về Fire Cloud Message các bạn có thể đọc từ đây Phần 1 Qua phần 2 này mình sẽ hưỡng dẫn các bạn gửi tin nhắn từ Cloud Messaging từ Firebase tới thiết bị qua ...

Giới thiệu

Như phần 1 mình đã giới thiệu cho các bạn một số thông tin cơ bản về Firebase Cloud Message , Nếu các bạn chưa đọc về phần 1 về Fire Cloud Message các bạn có thể đọc từ đây Phần 1

Qua phần 2 này mình sẽ hưỡng dẫn các bạn gửi tin nhắn từ Cloud Messaging từ Firebase tới thiết bị qua 3 cách:

  • Gửi cho tất cả thiết bị

  • Gửi cho 1 thiết bị cụ thể

  • Gửi cho 1 chủ đề.

Từ việc tạo mới 1 project .

Bây giờ chúng ta cùng nhau tạo 1 ứng dụng mới theo những bước sau :

  1. Tạo mới 1 project từ Android Studio của bạn

Bạn có thể đặt tên ứng dụng của bạn với bất kỳ một tên nào tùy thích với mình mình sẽ đặt tên project là : Demo_Android_FCM

  1. Thực hiện cấu hình trên Firebase Các bạn truy cập vào link sau để thực hiện tạo một project trên Firebase

Tạo project với tên mà bạn thích để lưu nó trên Firebase . Ví dụ : mình đặt là tên là DemoAndroidFCM

Sau khi bạn tạo xong bạn sẽ thấy Firebase hỗ trợ nhiều nền tảng khác nhau như : Android , Ios, Web. Nhưng bài này mình chỉ hướng dẫn các bạn trên nền tảng Android.

Thêm Firebase tới project của bạn

Trong project android của bạn . Bạn vào AndroidManifest.xml bạn lấy đường dẫn package của bạn với mình là : package="vn.home.htm.demo_android_fcm"

Bạn copy vào package trong project của bạn vào : **Android package name **

Tải cấu hình file Json về máy tính của bạn

Thêm firebase tới SDK

Giờ chúng ta đã hoàn thành việc tạo 1 project trong Firebase. Giờ chúng ta cùng nhau thực hiện trong project trong android studio của bạn

Bước 1 : Thêm file json vào trong Project của bạn :

Bước 2 : Thêm dòng sau vào Project-Level build.gradle :

classpath 'com.google.gms:google-services:3.0.0'

Thêm dòng sau vào App-Level build.gradle :

compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
apply plugin: 'com.google.gms.google-services'

Xem hình dưới để các bạn được rõ hơn :

Bước 3 : Thêm 2 service cho Project của bạn như sau :

FirebaseInstanceIdServiceAndroid.class :

và MyFirebaseMessage.class

Trong AndroidManifest.xml bạn cấp quyền ứng dụng của bạn:

<uses-permission android:name="android.permission.INTERNET"/>

thêm vào 2 service mình đã tạo ở trên :

        <service android:name=".FirebaseInstanceIdService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <service
            android:name=".MyFirebaseMessage"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

Cuối cùng là mình chạy ứng dụng của các bạn lên và xem token lấy được từ Logcat của các bạn (Như bài trước mình đã nói các bạn phải có Google Play Service và phiên bản Android 4.0 hoặc cao hơn. ).

Bạn lưu token các bạn lấy được để qua bước sau mình sẽ hướng dẫn cách bạn sử dụng token đó để làm sao có thể gửi tin nhắn từ Firebase Cloud Message tới thiết bị cụ thế.

Bước tiếp theo, Gửi tin nhắn từ Firebase Cloud Message

Có 3 cách gửi tin nhắn tới thiết bị của cách bạn :

  • Gửi theo thiết bị cụ thể

  • Gửi theo nhóm

  • Gửi cho tất cả thiết bị

Cả 3 cách trên bạn vào https://console.firebase.google.com để gửi tin nhắn tới ứng dụng của bạn

Cách 1 : Gửi theo thiết bị cụ thể . Bạn chọn mục Single device và dán token của bạn vào FCM registration token như sau :

Sau khi bạn nhấn nút gửi đi sau 1 thời gian bạn sẽ nhận được tin nhắn dưới điện thoại của bạn :

Cách 2: Gửi theo nhóm. Mình sẽ tạo nhóm là : HaiMT như đoạn code sau

FirebaseMessaging.getInstance().subscribeToTopic("HaiMT").addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                String msg = "OK";
                if (!task.isSuccessful()) {
                    msg = "Fail";
                }
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Trên Firebase bạn sẽ tạo như sau :

Sau đó bạn nhấn nút gửi bạn sẽ nhận được tin nhắn dưới client như sau :

Cách 3: Gửi cho tất cả các thiết bị. Cách này bạn chỉ cần chọn mục User segment với nội dung và title của bạn và nhấn nút gửi

Bài này mình thực hành để mình có thể lấy được tin nhắn từ Firebase Cloud Message hy vọng nó hữu ích có thể giúp các bạn.

Cảm ơn các bạn đã đọc qua bài viết của mình . Bạn có thể tham khảo về Firebase Clould Message từ mục dành riêng cho android theo link tham giảo dưới đây : https://firebase.google.com/docs/cloud-messaging/android/client

0