iOS Push Bildirimlerine Medya Ekleme

Merhaba, bugünkü yazıda çoğumuzun telefonunda mutlaka gördüğü resimli bildirimler göndermeyi 3 basit adımda inceleyeceğiz.

Size bunu yapabilmek için kullanmamız gereken Notification Service Extension’ı tanıtayım. Service Extension uzantısı, uygulamadaki push payload’larını durdurur ve size sunulmadan önce bildirimdeki içeriği değiştirme şansı verir.

Service Extension bu sayede kullanıcılara, hayranlık duyacakları bildirimler göndermenize yardımcı olacaktır.

Öncelikle projenizde daha önce push bildirimleri kurulumu yapılmış olmalıdır. Kurulum yapmadıysanız öncesinde bu adımı tamamlayınız.

Hazırsak adım adım ilerleyelim:

1) Notification Service Extension Target’ını ekleyin

Görselde gösterildiği gibi projenizi açtıktan sonra XCode ekranında File->New->Target… ile target ekleme ekranını açalım:

Yeni Target oluştur

Sonra iOS sekmesini “notification” yazarak filtreleyin. Ve aşağıdaki gibi Notification Service Extension target’ını seçelim:

Next butonuna tıklayıp seçtiğiniz bir isim belirleyin. ProjeAdıPushNotificationService şeklinde verebilirsiniz. Finish diyin. Elde edeceğimiz şey aşağıdaki gibi bir proje grubu olacak:

Notification Servis Extension dosyaları

2) Push Bildirimi aps Payload’u değiştirin

Bildirim gönderirken muhtemelen aps payload’unuz şuna benziyordu:

aps payload

Bu şekilde bildirim attığımızda Push Notification aşağıdaki gibi sonuna [modified] eki eklemiş şekilde görünür:

Xcode test kodu ile birlikte push bildirimi

Bildirimlerimize medya ekleyebilmemiz için gönderdiğimiz aps payload umuza aşağıdaki satırı eklememiz gerekiyor.

“mutable-content”:1

mutable-content, işletim sisteminin service extension’ı başlatması ve fazladan bir işlem yapması gerektiğini belirtir.

Şimdi payload’a ekleyeceğimiz diğer şey bir image url’idir. Bildirim gönderdiğiniz platformda bir image gönderdiğimizi varsayalım. Aps payload’un son hali şöyle olacaktır:

Medya url’i eklenmiş aps payload

3) NotificationService.swift dosyasını özelleştirin

NotificationService.swift dosyasını açalım ve XCode tarafından yazılan bu kodu inceleyelim:

Xcode tarafından yazılan didReceive fonksiyonu

didReceive(_:withContentHandler:) bildirimlerinizi istediğiniz gibi değiştirebilmenizi sağlayan önemli bir fonksiyondur. Parametre olarak gelen request ile gelen bildirimdeki key ve value’ları görebilir, istediğiniz gibi editleyerek bildirim ekranında gösterilmesi için NotificationContent tipinde return edebilirsiniz. Xcode’un örnek olarak eklendiği kodunda title’ın sonuna [modified] ekini eklemiş.

Şimdi NotificationService.swift dosyasını biraz değiştirelim. Apple ekibi bizim için bazı kodlar hazırlamış, ancak bir mediaUrl olarak gönderdiğimiz url’in görüntülenebilmesi için kodu biraz değiştirmemiz gerekiyor. Bunun için aşağıdaki fonksiyona ihtiyacımız olacak:

Bir url kullanarak internetten bir görüntü indirmek ve UNNotificationAttachment olarak geri döndürmek için kullanacağımız yardımcı bir fonksiyon

Aslında tüm işimizi yapacak fonksiyonumuz artık hazır. Bunu didReceive(_:withContentHandler:) fonksiyonunda şu şekilde kullanalım:

Özelleştirdiğimiz didReceive fonksiyonu

Sonuç

Bu adım biraz etkileyici gelebilir. Tam olarak anlaşılması için kendinize biraz zaman ayırın 😊. Tüm yaptığı, değerleri almak için sadece aps payload’una girmek. 
Daha sonra bildiriminiz aşağıdaki gibi görünecektir 😎

Görsel eklenmiş push bildirimi