Blog Single

NotificationManager nedir ?

  • Notification Manager, Mobil işletim sistemli cihazlarınızda System Toolbar menüsünde de görebileceğiniz, uygulama bildirimleridir.
  • NotificationManager, bildirimlerde başlık, açklama metini, ilgi çekici renkli açıklama metini, emojiler, uygulamaya ait bildirim icon'u ve bildirime ait resim içerebileceği gibi, kısayol butonları (hemen ara, aramayı yanıtla, iptal et gibi), sesli veya titreşimli bildirimler ile de zenginleştirilebilmektedir.
  • Notificationlar ayrıca; Titreşim, sesli bildirim(ses dosyası) içerebilirler.
  • Bildirimleri zenginleştirebilmenin bir diğer yolu ise, çevrimiçi ağ ile haberleşme sağlayarak güncel bildirimleri servis edebilme becerisidir.

Android ile Notification Manager nasıl kullanabiliriz ?

Öncelikle projenizin ilgili activity dosyasına import ediniz;

  • android.app.Notification
  • android.app.PendingIntent
  • android.content.Intent
  • android.app.NotificationManager

Örnek çalışmamızda bir servis yardımı ile çalışmayacağımızdan dolayı, basit ve anlaşılır olması adına bir Activity dosyamızın onCreate methodu içerisinde iken,

Sade bildirim örneği için;

  • Intent intent = new Intent(this, MainActivity.class);
  • PendingIntent pIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0);
  • Notification myNotify  = new Notification.Builder(this)
    .setContentTitle("Merhaba Notify !")
    .setContentText("www.serifgungor.com")
    .setSmallIcon(R.drawable.uygulama_icon)
    .setContentIntent(pIntent)
    .setAutoCancel(true).build();
  • NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • notificationManager.notify(0, myNotify);

Notification değer olarak Notification methodları için aşağıdaki tipleri alır ve kullanım şekilleri aşağıdaki gibidir;

  • .setContentTitle("Merhaba Notify !") - Bir bildirimin Başlık metnini kapsar
  • .setContentText("www.serifgungor.com") - Bir bildirimin içerik yazısını kapsar
  • .setSmallIcon(R.drawable.uygulama_icon) - Bildirimi gönderen uygulamanın, simge halindeki görselinin res > drawable klasörü içerisindeki ismini işaret eder. 24px ve katları olarak oluşturmanız önerilir. Ben örneğimde 48x48 boyutunda görsel kullandım.
  • .setContentIntent(pIntent) - Bildirime tıklandığında açılacak olan activity sayfasını işaret eder.
  • .build(); - Notification methodlarının tamamlanmış ve notification değişkeninin kullanıma hazır hale gelmesini sağlar.
  • .setAutoCancel(true) - Bildirime tıklanınca, bildirimin kapanmasını sağlar.
  • .setTicker("Bir mesajınız var !") - Bildirim çubuğunda kısa süreli hızlı kapanan bir ileti gösterir.

Not;

  • Kendi cihazımdaki testlerimde setContentTitle veya setContentText olmadan notification çalışır iken, setSmallIcon eklemediğim durumlarda bildirim gözükmedi.
  • Sesli ve titreşimli bildirim örnekleri için de ayrıca makalenin devamı gelecektir. Takipte kalabilirsiniz.

Resimli Notification Örneği

NotificationCompat.Builder notificationBuilder= new NotificationCompat.Builder(this);
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
notificationBuilder.setContentTitle("Şerif GÜNGÖR Blog");
notificationBuilder.setContentText("Şerif GÜNGÖR Blog sayfasına hoşgeldiniz !");
notificationBuilder.setTicker("Yeni bildiriminiz var !");

 Bitmap oluşturup, notification'a tanımlanan setStyle kısmına bitmap'i göndererek, bildirimin resimli olmasını sağlıyoruz.

Bitmap bitmap_image = BitmapFactory.decodeResource(this.getResources(), R.drawable.notification_big_picture);
NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle().bigPicture(bitmap_image);
bigPictureStyle.setSummaryText("Şerif GÜNGÖR Blog'dan yeni bir bildirim aldınız");
notificationBuilder.setStyle(bigPictureStyle);

 Intent'in yönlendirme görevlerini tanımlıyoruz.

Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder TSB = TaskStackBuilder.create(this);
TSB.addParentStack(MainActivity.class);
TSB.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =TSB.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

.notify ile bildirimi yayımlıyoruz, .build ile notificationBuilder'i oluşturulmasını sağlıyoruz.

notificationBuilder.setContentIntent(resultPendingIntent);
notificationBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =(NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(11221, notificationBuilder.build());

 

Çok Satırlı Notification Örneği

NotificationCompat.Builder  mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("New Message");
mBuilder.setContentText("You've received new message.");
mBuilder.setTicker("New Message Alert!");
mBuilder.setSmallIcon(R.mipmap.ic_launcher);

 Inbox Tarzı açılış/kapanma ve Chat uygulamaları gibi birden fazla satır gösterebilme

NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

String[] events = new String[6];
events[0] = new String("This is first line....");
events[1] = new String("This is second line...");
events[2] = new String("This is third line...");
events[3] = new String("This is 4th line...");
events[4] = new String("This is 5th line...");
events[5] = new String("This is 6th line...");
inboxStyle.setBigContentTitle("Big Title Details:");

for (int i=0; i < events.length; i++) {
    inboxStyle.addLine(events[i]);
}

mBuilder.setStyle(inboxStyle);

Notification üretilmesi, açılacak olan Activity'nin belirlenmesi.

Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın