Spring Boot Üzerinden Android Uygulamaya Notificación push Gönderme | de Uğurcan Durak | Noviembre de 2020

Merhabalar, bu yazımda Spring Boot üzerinden Android bir cihaza nasıl bildirim gönderebileceğimizi adım adım anlatmaya çalışacağım. Konuyu iki yazıda ele almaya çalışacağım. Bu yazımda basit düzeyde tek bir cihaza bildirim göndermeyi anlatacağım diğerinde ise daha ileri düzeyde MongoDB kullanarak toplu mesaj, konuya mesaj, konuya abone olma gibi konacaçı anlatızion. Umarım faydalı olur, haydi başlayalım 🙂

Özetle, bildirim göndermek için bir Spring Boot uygulaması ve bildirimi almak için bir de Android uygulaması oluşturacağız. Daha sonra Postman ile Spring Boot uygulamamıza «post» isteğinde bulunarak Android uygulamamıza bildirim yollayacağız.

  1. Spring Boot proje oluşturma (projede gradle ve Kotlin kullanılmıştır)
  2. Firebase proje oluşturma ve Android uygulumayı Firebase ‘e ekleme (önceki yazımın giriş kısmında bahsetmiştim dilerseniz inceleyebilirsiniz: https://medium.com/@ugurcandurakk/firebase-ml-kit-custom-model-kullanarak-realtime-android-object-recognition-nesne-tan%C4%B1ma-729ed76cd8d9
  3. Proyecto Android oluşturma

Firebase projesi oluşturduğunuzu varsayarak devam ediyor olacağım. Öncelikle Firebase üzerinden oluşturduğumuz projeyi açıyoruz ve ekranın sol üstünde yer alan «Projeye Genel Bakış» butonunun yanındaki «Ayarlar» ikonuna basarak «Proje Ayarularımet» -> «Hizular».

Daha sonra karşımıza aşağıdaki gibi bir ekran çıkacak. Burada entegrasyon için gereken kodun oluşturulacağı dili seçmelisiniz. Şu anlık bu adımı atlayalım çünkü buradaki kodu NotifcationService class’ımızı oluşturduğumuz zaman ekleyeceğiz. Daha sonra en altta bulunan «Yeni özel anahtar oluştur» butonuna basıyoruz ve oluşan anahtarı indiriyoruz.

Bir önceki adımda oluşturup indirdiğimiz Firebase anahtarı Spring Boot projemize ekleyeceğiz. Öncelikle Spring Boot projemizi açıyoruz ve indirdiğimiz anahtarı tutup «src / main / resources» klasörüne sürükleyip bırakıyoruz (dilerseniz copy-paste de yapabilirsiniz).

Daha sonra «application.properties» dosyamızın içerisinde service.firebase-config-file değişkenine eklediğimiz firebase dosyamızın yolunu atayalım. Dosya yolunu atadığımız service.firebase-config-file değişkenini daha sonra NotifcationService class’ımızda kullanacağız.

service.firebase-config-file=src/main/resources/pushnotificationspring-firebase-adminsdk-dex5a-619bd7b988.json

Son olarak «build.gradle» dosyamızın içerisine aşağıdaki kodu ekleyelim ve sağ yukarıda çıkan butona basarak projemizi sync edelim.

implementation("com.google.firebase:firebase-admin:7.0.1")

Firebase anahtarımızı projemize ekledik şimdi ise sırasıyla «service», «model» ve «controller» package’larımızı oluşturalım ve oluşturduğumuz package’ların içerisine «NotificationService», «NotificationDTO» vezleyContrley.

NotificationService

NotificationService class’ımızı oluşturduktan sonra initFirebase() fonksiyonumuza daha öncesinde Firebase Admin SDK oluştururken karşımıza çıkan configuración kodunu ekleyelim ve fonksiyonumuzun başına «@PostConstruct» anotasyonunu yazalım. Son olarak «sendToDevice» fonksiyonumuzu de ekleyelim ve NotificationService class’ımızı tamamlayalım.

Notificación DTO

Bildirim için gerekli bilgileri alacağımız NotificationDTO class’ımızı oluşturalım.

NotificationController

Önceki adımlarda NotificationDTO ve NotificationService‘mizi oluşturmuştuk. Şimdi ise NotificationController‘class’ımızı oluşturalım ve sendToDevice fonksiyonumuzu içerisine ekleyelim.

Evet, buraya kadar Spring Boot ile temel işlemlerimizi gerçekleştirmiş olduk. Şimdi yeni bir Android projesi oluşturalım ve oluşturduğumuz projeyi Firebase’e ekleyelim. Bu adımı atlayacağım fakat önceki yazımın ilk kısımlarında bahsetmiştim dilerseniz bakabilirsiniz: https://medium.com/@ugurcandurakk/firebase-ml-kit-custom-model-kullanarak-realtime-android-object-recognition-nesne-tan%C4%B1ma-729ed76cd8d9

Adicción a Eklenmesi

Projesi Android oluşturduğunuzu ve Firebase’e eklediğinizi varsayarak devam ediyorum. Projemizde Android build.gradle dosyamızı açıyoruz ve aşağıdaki kodu ekliyoruz:

//Firebase Messaging
implementation 'com.google.firebase:firebase-messaging'

Servicio de mensajería

Gerekli kütüphaneyi projemize dahil ettikten sonra MessagingService class’ımızı oluşturalım ve içerisine aşağıdaki gibi kodları ekleyelim. Aslında burada bir işlem yapmayacağız. Şu anlık sadece mesajın gelip gelmediğini depurar etmemizi sağlayacak fakat ihtiyaca göre burada çeşitli kodlamalar yapılabilir.

AndroidManifest

MessagingService class’ımızı yazdıktan sonra manifest dosyamıza gerekli kodları ekleyelim. Öncelikle yazdığımız MessagingService ‘en bir servis olduğunu belirtmek için aşağıdaki kodu ekleyelim.

<service
android:name=".MessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>

android:name kod satırının karşısına kendi yazdığınız MessagingService yolunu yazın.

Daha sonra uygulamamızın bildirim ikonunu ve rengini belirlemek için aşağıdaki kodu ekleyelim.

<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/cows" />

<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />

Manifiesto dosyasının hijo hali aşağıdaki gibi:

Actividad principal

Evet son olarak MainActivity’mize gerekli kodları ekleyerek kodlama kısmını tamamlıyoruz. Burada getTokenFromFirebase() fonksiyonu ile firebase’in cihaza sağladığı token’ı alıyoruz ve Log olarak basıyoruz sonrasında bu token’ı bildirim göndermek için kullanacağız.

Android tarafındaki kodlamalarımızı por bitirdik şimdi Spring ve Android uygulamalarımızı çalıştıralım. Android uygulamamızı çalıştırdıktan sonra Android Studio’da en aşağıda bulunan Logcat butonuna basalım ve ardından yukarıda bulunan seçenekler kısmından Verboso ‘u seçelim ve hijo olarak arama yerine FirebasePushToken yazıp aratalım. Karşımıza aşağıdaki gibi bir token çıkacaktır bu token’ı seçerek kopyalayalım ve sonraki adıma geçelim.

Cartero

Bildirimi tetiklemek için Spring uygulamamıza «post» isteğinde bulunmamız gerekmekte. Bunun için bilgisayarınızda «Cartero» uygulamasının kurulu olması gerekir. Eğer kurulu değilse Google üzerinden aratarak kolay bir şekilde kurabilirsiniz. Kurmuş olduğunuzu varsayarak devam ediyor olacağım.

Postman uygulamamızı açalım ve istek kısmını «POST» olarak seçelim ve «url» kısmına yazalım. No: Spring uygulaması puerto predeterminado olarak 8080 portunda çalışmakta. Bien 8085 olarak değiştirdiğim için localhost:‘tan sonra 8085 yazıyorum siz uygulamanızın çalıştığı portu yazmalısınız. Daha sonra alt kısımda bulunan alanlardan «Linea de cuerpo» ve «Json» seçeneklerini seçiyorum. Daha sonra Json formatında atacağımız isteği yazıyoruz. Burada targetToken kısmına token’ımızı, messageTitle ve messageBody kısımlarını ise göndermek istediğiniz mesaj bilgilerini yazıyoruz. No: targetToken, messageTitle, messageBody Spring uygulamamızdaki NotificaitonDTO class’ımızdaki alanlarla aynı isimlere sahip olması gerekmekte. Gerekli alanları doldurduktan sonra «Enviar» butonuna basmadan önce Android uygulamanızın arka planda olduğundan emin olun aksi takdirde bildirim gelmeyebilir. Bu durumdan emin olduktan sonra «Enviar» butonuna basabilirsiniz 🙂

Basit anlamda Spring Boot üzerinden Android uygulamamıza nasıl bildirim göndereceğimizden bahsettim. Bir sonraki yazımda Android uygulamadan Spring Boot uygulamamıza token yollayıp MongoDB ‘ye kaydedicez ve bildirim yollarken token’ları veritabanında çekeceğiz. Bu sayede toplu mesaj, konuya mesaj, konuya abone olma gibi işlemleri dinamik bir şekilde Spring uygulamamızdan gerçekleştireceğiz. Umarım faydalı olmuştur takıldığınız veya sormak istediğiniz bir konu olursa benimle iletişime geçebilirsiniz 🙂
correo: [email protected]
github android:
primavera github:

Kullanılan Kaynaklar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *