Tích hợp Push Notification trên Android

Build ứng dụng Voice call/Video call

0.0 (0 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 17:09 10-04-2023 1.298 lượt xem 0 bình luận
Tác giả/Dịch giả: Đang cập nhật
Học nhanh

Danh sách bài học

Tích hợp Push Notification trên Android

Hướng dẫn tích hợp Tích hợp Push Notification trên Android

Ở bài trước, Kteam đã hướng dẫn các bạn cách TÍCH HỢP PUSH NOTIFICATION TRÊN IOS APP để thông báo cuộc gọi đến khi khách hàng tắp app.

Và bài học cuối trong serial này, chúng ta sẽ cùng nhau thực hiện Tích hợp Push Notification trên nền tảng Android.


Nội dung

Trong bài này, Kteam sẽ hướng dẫn bạn các nội dung chính như sau:

  • Setup push trên dashboard
  • Tích hợp firebase vào project
  • Register push
  • Nhận và hiện notification
  • Test

Thư viện sử dụng


Hướng dẫn code

Chuẩn bị

  • Project firebase đã set up project của bạn
  • Project đã tích hợp phần call của Stringee

Setup push trên dashboard

  • Vào Stringee Dashboard, chọn Push Notificaton > Chọn project cần đăng ký push> Chọn New app > chọn Android app
  • Điền package name của project và firebase server key lấy trên project firebase đã setup > Chọn Add New App

Tích hợp firebase vào project

  • Tải file file google-services.json từ project firebase
  • Mở file build.gradle level project, thêm các dòng sau:
buildscript {
repositories {
      ...
      	google()  // Google's Maven repository
      	mavenCentral()  // Maven Central repository
}

    	dependencies {
...
// Add the dependency for the Google services Gradle plugin
classpath 'com.google.gms:google-services:4.3.15'
}
}

allprojects {
...

repositories {
    		// Make sure that you have the following two repositories
google()  // Google's Maven repository
mavenCentral()  // Maven Central repository
}
}
  • Mở file build.gradle level app, thêm các dòng sau:
plugins {
id 'com.android.application'
// Add the Google services Gradle plugin
id 'com.google.gms.google-services'
...
}

dependencies {
...
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:31.4.0')
implementation 'com.google.firebase:firebase-messaging'
}

Register push

Để register push của Stringee, ta cần device token lấy từ firebase. Sau khi lấy được device token từ firebase, ta gọi hàm registerPush và truyền vào device token để có thể nhận được push:

FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
if (task.isSuccessful()){
String token = task.getResult();
stringeeClient.registerPushToken(token, new StatusListener() {
    		@Override
    		public void onSuccess() {
    		}

    		@Override
    		public void onError(StringeeError error) {
    		}
});
}
});

Nhận và hiện notification

Tạo file MyFirebaseMessagingService kế thừa từ FirebaseMessagingService để nhận notification bắn đến

public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
super.onMessageReceived(message);
}
}

Khai báo file MyFirebaseMessagingService trong file AndroidManifest.xml

<service
android:name=".MyFirebaseMessagingService"
   	android:enabled="true"
   	android:exported="false">
   	<intent-filter>
       	<action android:name="com.google.firebase.MESSAGING_EVENT" />
   	</intent-filter>
</service>
  • Khi nhận được push ta có thể check thông qua trường stringeePushNotification trong bản tin
  • Push cuộc gọi sẽ có đầy đủ thông tin của cuộc gọi như from, to, callStatus, …
  • Trường callStatus sẽ có các giá trị như là started, ended, ringing, …. Ta sẽ dựa theo giá trị này để show hoặc cancel notification
@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
super.onMessageReceived(message);
if (message.getData().size() > 0) {
String pushFromStringee = message.getData().get("stringeePushNotification");
if (pushFromStringee != null) {
String data = message.getData().get("data");
if (data != null) {
try {
JSONObject jsonObject = new JSONObject(data);
JSONObject fromObject = jsonObject.optJSONObject("from");
String from = fromObject.optString("alias", "");
if (from.length() == 0) {
from = fromObject.optString("from");
}
String callStatus = jsonObject.optString("callStatus", "");
if (callStatus.length() > 0) {
if (callStatus.equals("started")) {
showNotification(from);
}
if (callStatus.equals("ended") || callStatus.equals("answered")) {
cancelNotification(this);
}
}
               		} catch (JSONException e) {
                   		throw new RuntimeException(e);
               		}
           		}
       	}
   	}
}
  • Tạo notification
int notificationId = 0; //id của notification
...
private void showNotification(String from) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
   	//Tạo notification channel đối với android 8 trở lên
   	if (VERSION.SDK_INT >= VERSION_CODES.O) {
       	NotificationChannel notificationChannel = new
NotificationChannel("Channel id", "Channel name", NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setDescription("Channel description");
notificationManager.createNotificationChannel(notificationChannel);
   	}
	//Tạo Intent để mở màn hình MainActivity khi click vào notification
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "Channel id");
builder.setContentTitle("Incoming call");
builder.setContentText("Incoming call from: " + from);
builder.setSmallIcon(mipmap.ic_launcher);
builder.setOngoing(true);
builder.setPriority(NotificationCompat.PRIORITY_HIGH);
builder.setCategory(NotificationCompat.CATEGORY_CALL);
builder.setContentIntent(pendingIntent);
builder.setShowWhen(false);
//
notificationManager.notify(notificationId, builder.build());
}
  • Cancel notification:
public static void cancelNotification(Context context) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
   	notificationManager.cancel(notificationId);
}

Kết

Trong bài này, chúng ta đã cùng nhau thực hiện Tích hợp Push Notification với Android app.

Đây cũng là bài học cuối của serial Hướng dẫn build ứng dụng Voice Call & Video Call từ Kteam.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tích hợp Push Notification trên Android dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Đang cập nhật

Khóa học

Build ứng dụng Voice call/Video call

Trong khóa học BUILD ỨNG DỤNG VOICE CALL/VIDEO CALL này, Kteam sẽ hướng dẫn các bạn cách làm tối ưu hơn để tiết kiệm thời gian phát triển bằng việc sử dụng SDKs của đơn vị thứ ba.

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Không có video.