Categories
Berita PDSI

Flutter Push Notifications dengan Firebase

Daftar Isi

Push Notifications Pada Flutter

gambaran cara kerja push notifications

|-Uji Coba Push Notifications Melalui Firestore

Jalankan kode di bawah ini, kemudian hasil apps yang terbuka di minimize

import 'dart:io';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:firebase_core/firebase_core.dart';

//apa yang dilakukan di background
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
}

Future<void> main() async {
  //memastikan bahwa ada Widget Binding
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  //buka push notification ketika apps tidak aktif
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  //tangkap data ketika apps aktif
  FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
    print ("Data notif: ${message.data}"); //data dalam bentuk json
    print (message.notification?.title);
    print (message.notification?.body);
  });
  //token dari klien yang memasang aplikasi ini
  String? token = await FirebaseMessaging.instance.getToken();
  
  registerUser(token, "tes_aplikasi");
  runApp(MyApp());
}

//sebagai contoh, user diregister ke firestore
//tetapi praktiknya, dapat menggunakan database Institusi
//cukup buatkan API/Web Service untuk menyimpan token

//inisialisasi koneksi ke firestore
final FirebaseFirestore db_ = FirebaseFirestore.instance;

//meregister perangkat klien ke firestore
registerUser(String? token, String user) async
{
  //simpan status sudah registrasi atau belum

  //atau bisa juga menggunakan waktu, misalnya seminggu kemudian
  //jika sudah lewat waktu, maka coba register lagi
  //itu jika tidak yakin token masih ada di database atau tidak
  //tetapi mungkin itu tidak diperlukan apabila backup databasenya bagus
  String namaVariabel = "register_com.dul.projekpushnotif";
  SharedPreferences konfigurasi = await SharedPreferences.getInstance();
  bool? status = konfigurasi.getBool(namaVariabel);
  if (status == null) {
    status = false;
  }
  //jika belum teregistrasi maka lakukan registrasi
  if (!status)  {
    //sifatnya akan replace data jika sudah ada
    db_.collection ("users").doc(user).set(
        {
          'token': token,
          'tanggal_register': FieldValue.serverTimestamp(),
          'platform': Platform.operatingSystem
        }
    );
    //status sudah registrasi
    await konfigurasi.setBool(namaVariabel, true);
  }
}

Apabila ada pesan kesalahan berkaitan dengan DEX, maka tambahkan multiDexEnabled true pada bagian defaultConfig pada berkas <proyek>\android\app\build.graddle

Setelah itu, jalankan prosedur berikut

|-Push Notifications Massal

Push Notifications massal prinsipnya adalah mengirim token ke Firebase Cloud Messaging, baik menggunakan Node.js, Java, Phyton, Go, PHP maupun bahasa pemrograman apapun yang memiliki Firebase Admin SDK. Sebaiknya, token yang dikirimkan dalam bentuk senarai, bukan mengirimkan satu-satu.

//contoh di Node.js
//token dibuat senarai
var regkey = [ "token1", "token2"];
//kirim dalam sekali pengiriman
admin.messaging().sendToDevice(regkey, payload, opt).then(function(response){
//lakukan aksi jika berhasil
}).catch(function(error){
//lakukan aksi jika error
});

Pelatihan Mobile Programming with Flutter hari ketiga (12/8/2021) sebagai bagian dari penggunaan dana hibah PKKM tahun anggaran 2021 dengan mentor Faizal Rahman (https://pdsi.unisayogya.ac.id/unisa-yogyakarta-menerima-bantuan-pemerintah-pkkm-tahun-anggaran-2021/)[bst]

Sumber:

By basit

Biro Pengembangan Teknologi Dan Sistem Informasi

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.