iOS Push Bildirimlerine Medya Ekleme

Yunus Tek
Yunus Tek
Dec 5, 2018 · 3 min read

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

Image for post
Image for post

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:

Image for post
Image for post
Yeni Target oluştur

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

Image for post
Image for post

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:

Image for post
Image for post
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:

Image for post
Image for post
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 😎

Image for post
Image for post
Görsel eklenmiş push bildirimi

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade