iOS Notification Extension ile Push Notif İçeriğini Değiştirmek

En son güncellendiği tarih: May 30

Kullanıcıların uygulama kullanımlarını artırmak ve kullanıcılara küçük işler yaptırmak için nasıl bildirim gönderebileceğimizi bir önceki mobi'de öğrenmiştik. Bu mobi'de ise gelen bildirimleri kendi amacımız doğrultusunda nasıl kontrol edebileceğimizi öğreneceğiz.


iOS 10 ile birlikte Apple, notification service extension’ı kullanıma alarak bildirimleri kullanıcı görmeden özelleştirebilmemizi sağladı. Örneğin encrypt ederek gönderdiğimiz bildirimi decrypt edebiliyoruz, gelen bildirimin içeriğini/mesajını değiştirip kullanıcıya özel hale getirebiliyoruz veya gif,resim,ses gibi içeriklerle bildirimi zenginleştirebiliyoruz.


Hedef

Bu mobide resim eklemeyi ve işletim sistemi tarafından direk gösterilen push notif mesajını, kullanıcıya göstermeden değiştirmeyi öğreneceğiz.


Başlamadan önce bildirim gönderebilmek ve yaptığımız geliştirmeleri görebilmemiz için Knuff’a ihtiyacımız var. Programı yüklemek için buraya tıklayabilirsiniz.


Part 1:

Geliştirmelerimizi yaparken Push Notification yazımızda oluşturduğumuz proje üzerinden ilerleyeceğiz. Linkten indirebilirsiniz.

İlk olarak projemize Notification Service Extension eklememiz gerekiyor. Proje ayarlarımızda “Target” kısmındaki “+” iconuna tıklayarak extension’ı ekliyoruz. (Fotoğraf 1)


Fotoğraf 1

Çıkan uyarı ekranında “Activate” butonuna tıklıyoruz. (Fotoğraf 2)


Fotoğraf 2

Bu bize “NotificationService.swift” isimli aşağıdaki gibi yeni bir swift class’ı yaratacak. Geliştirmelerimize bu class üzerinden devam edeceğiz.



Part 2:

Bildirim içerisinde resim gösterebilmemiz için uygulamamıza gönderdiğimiz payload’a resim linkini ve mutable content değerini eklememiz gerekiyor. Mutable content değeri gönderilen bildirimin extension içine girip girmeyeceğini belirliyor. “1” olarak gönderildiğinde extension içerisinde kontrol edilebiliyor, “0” olarak gönderilir ise extension’a girmiyor. Resim için ise “imageUrl” adında yeni bir değer yaratıyoruz ve göndermek istediğimiz resmin linkini buraya yazıyoruz. Sonunda payload kısmı aşağıdaki gibi oluyor. (Fotoğraf 3)


Fotoğraf 3

Part 3:

Gönderdiğimiz linkten resmi bildirimde gösterebilmek için linkteki resmi indirmemiz, diske kaydetmemiz ve bildirime eklememiz gerekiyor. Bunun için önce

"UNNotificationAttachment" class'ı için bir extension yazarak başlıyoruz. Oluşturduğumuz notification service extension'a yeni bir swift dosyası ekliyoruz ve aşağıdaki şekilde extensionımızı yazıyoruz.



Extension içinde oluşturduğumuz "create" fonksiyonu ile FileManager kullanarak diskimizde yeni bir directory oluşturuyoruz. Daha sonra notification service extension içinde indirdiğimiz resmi Data şeklinde bu fonksiyon içerisinde oluşturduğumuz directory'e kaydediyoruz. Son olarak kaydettiğimiz data ile bir UNNotificationAttachment yaratarak notification service extension class'ımıza geri gönderiyoruz. Gönderdiğimiz UNNotificationAttachment'ı bildirimimize eklemek için didReceive fonksiyonunu aşağıdaki şekilde düzenliyoruz.



Payload içerisinde gönderdiğimiz "imageUrl" isimli alandan resim linkimizi alıyoruz. Daha sonra Data.init(contentsOf:) fonksiyonu ile bu linkteki datayı alıyoruz. Aldığımız datayı yazdığımız "create" fonksiyonu içinde UNNotificationAttachment oluşturmak için kullanıyoruz. Oluşturduğumuz attachment'ı bildirimimize ekliyoruz. Artık uygulamamız bildirimlerde resim gösterebilir.


Mesajı değiştirmek için ise aşağıdaki şekilde bir kod parçası yazmanız yeterli.

bestAttemptContent.title = "\(bestAttemptContent.title) buraya istediginiz seyleri yazabilirsiniz"


Knuff üzerinden deviceToken ve sertifika kısımlarını doldurup bildirim gönderebiliriz.


Aşağıda örnek gönderim ile ilgili videoyu bulabilirsiniz.

Videoda gönderdiğimiz payload aşağıdaki gibidir.


Projeye erişmek için aşağıdaki linki kullanabilirsiniz.

Github: https://github.com/monurilgaz/PushNotification


#ios #pushnotification #swift #iospushnotification #knuff #extension #richnotification

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
JetBrains Hakkında Detaylı Bilgi Alın

© 2020 by mobiler.dev

mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın