Daftar Isi
Push Notifications Pada Flutter
|-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: