Firebase Cloud Messaging Tutorial for Android
Bài đăng này đã không được cập nhật trong 8 năm
- Xin chào bạn bè, Hiện tại có rất nhiều cách hướng dẫn push GCM điển hình chúng ta đã biết với 2 cách sau đây.
-
Nhưng bây giờ google có một sự thay thế đó là dễ dàng hơn gcm. Trong bài này tôi sẽ sử dụng FCM (căn cứ hỏa lực Cloud Messaging). Vì vậy, ngày hôm nay trong này căn cứ hỏa lực Cloud Messaging Tutorial tôi sẽ dạy bạn làm thế nào để gửi thông báo đẩy để các thiết bị Android đơn sử dụng căn cứ hỏa lực Cloud Messaging. Vì vậy, cho phép bắt đầu.
-
Trước khi tiến tới để hướng dẫn, bạn có thể kiểm tra video này thể hiện kết quả cuối cùng của bài viết này.
Video
{@youtube: https://youtu.be/ZT9wsyTqV2c}
Tạo một dự án Android Studio.
- Tới console filebase Console và hãy tạo ra một dự án mới.
- Khi chúng ta bắt đầu đặt tên ứng dụng và quốc gia phát triển.
- Sau đó chúng ta chọn môi trường phát triển IOS, Android...
- Sau đó nhập tên package ứng dụng bạn phát triển và mã SHA1 mã máy để debug khi phát triển ứng dụng như hình ảnh sau .
- Mã code SHA1 sử dụng trên máy MacBook có dòng lệnh như sau .
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
-
Tương tự trên windown , Ubuntu bạn có thể tìm kiếm trên mạng để lấy được mã SHA1.
-
Sau khi nhấp thêm ứng dụng bạn sẽ được google-services.json file.
Bây giờ bạn tạo một project android studio
- Thư viện cần dùng trong chương trình.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
//Add this line
compile 'com.google.firebase:firebase-messaging:9.0.0'
}
//Add this line
apply plugin: 'com.google.gms.google-services'
- Copy file google-services.json vào project đã tạo.
2.Bây giờ đi đến tập tin build.gradle cấp cơ của bạn và thêm đoạn mã sau.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
//Add this line
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Bên trong tập tin build.gradle mức độ ứng dụng thực hiện những thay đổi sau.
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "net.simplifiedcoding.firebasecloudmessaging"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
//Add this line
compile 'com.google.firebase:firebase-messaging:9.0.0'
}
//Add this line
apply plugin: 'com.google.gms.google-services'
Bây giờ đồng bộ vào dự án của bạn.
- Thực hiện các căn cứ Console Cloud Messaging.
Tạo một lớp có tên MyFirebaseInstanceIDService.java và viết mã sau đây.
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
//Class extending FirebaseInstanceIdService
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
//Getting registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Displaying token on logcat
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
private void sendRegistrationToServer(String token) {
//You can implement this method to store the token on your server
//Not required for current project
}
}
Bây giờ tạo MyFirebaseMessagingService.java và viết mã sau đây.
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//Displaying data in log
//It is optional
Log.d(TAG, "From: " + remoteMessage.getFrom());
Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
//Calling method to generate notification
sendNotification(remoteMessage.getNotification().getBody());
}
//This method is only generating push notification
//It is same as we did in earlier posts
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Firebase Push Notification")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
- Config lại file **AndroidManifest.xml **
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
Defining Services
-->
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
- Bây giờ chạy ứng dụng của bạn (Hãy chắc chắn rằng thiết bị của bạn là có dịch vụ google play hoặc nếu không nó sẽ không làm việc).
- Sau khi chạy bạn sẽ thấy những dấu hiệu trong logcat. Sao chép các token.
Gửi Push Notification sử dụng căn cứ hỏa lực điều khiển
-
Tới console firebase và chọn ứng dụng bạn đã tạo.
-
Từ menu bên trái chọn thông báo.
-
Click vào tin nhắn mới.
-
Nhập tin nhắn, chọn thiết bị duy nhất và dán mã thông báo bạn đã sao chép và nhấp vào gửi. Hướng dẫn video cũ thể.
{@youtube: https://www.youtube.com/watch?v=LNF_yho6ook}
Mình xin ngừng bài hướng dẫn ở đây. Mình xin cảm ơn.
All rights reserved