Local Notification

JSON ile Anlık “Local Notification” Göndermek

Üçüncü parti “Push Notification” servislerini kullanmak istemeyen bağımsız geliştiriciler için

N. Erhan Üzümcü
3 min readDec 3, 2020

--

Uzun zamandır yapay zeka tabanlı bir AppStore uygulaması geliştirmekteydim. “Push Notification” için üçüncü parti hizmetlerinden birinin SDK’sını indirip, XCode ile kullanmaya başlamıştım. İlk yaşadığım handikap, SDK’nın XCode içerisine yüklenmesi sırasında yaşadığım sıkıntılar oldu. İkincisi ise OS sistemini yükseltme sorunu da yaşadığımdan kendi telefonumu laptopa bağlayıp simulator olarak kullanamadım. Ve sonuncu olarak IOS Simulator ile üçüncü parti SDK “push notification” testlerini görmem de mümkün değildi.

Bu üç handikaptan dolayı karar değiştirdim ve XCode “local notification” özelliğini JSON ile tetikleyerek anlık bildirim göndermeyi özgün bir şekilde kodladım.

Neden JSON ile Anlık “Local Notification” Göndermek

Eğer aşağıdaki seçeneklere uygun şartlarınız var ise (kodlarını bu yazıda açıklayacağım) anlık “local notification” göndermeyi altenatif olarak düşünebilirsiniz:

  1. JSON barındıracağınız bir web hosting alanınız varsa (yoksa bile GoogleDrive üzerinden Excel açarak JSON çıktısını da kullanabilirsiniz. Fakat ben bu yöntemi XCode dan çağırarak hiç denemedim. Başka web projelerimde kullandığım oldu.)
  2. Uygulamanızın günlük “session” sayısı fazla ve kullanım süresi saat olarak oldukça uzunsa (yani uygulamanızın kullanıcı tarafından background modda sürekli çalışacağına eminseniz)
  3. Sürekli bildirim gönderecek ve bildirim analizlerini takip edecek bir ekibiniz yoksa (yani her işi yapan bağımsız geliştirici iseniz)
  4. Ücretli ya da ücretisiz de olsa üçüncü parti “push notification” SDK hizmetlerinden dolayı doğacak “crash” almak istemiyorsanız; yani uygulamanıza “SDK yükleyip hata yaşamak istemiyorum” diye düşünüyorsanız (paranız da cebinizde kalsın)
  5. Kullanıcılarımın oturum açtığı saatleri tahmin edebiliyorum ve o saatler de istediğim kadar “notification” gönderirim diyorsanız
  6. Denemekten ne zarar gelir ki diyorsanız (bir sonraki güncellemenizde kaldırabilirsiniz)

Şartlardan bir kaçına kafanız yatıyorsa Swift 5 kodlarını aşağıda resim formatında görebilirsiniz. Uygulamam TestFlight içerisindeyken sorunsuz bir şekilde bildirim gönderebildim.

Web Hosting Alanınıza JSON Belgeyi Yüklemek

https:// protokolüne sahip hosting hizmeti olması daha güvenli olacaktır. Hosting dosyalarınıza JSON kodunuzu yükleyip, istediğiniz zaman güncellemeniz gerekecektir.

JSON dosyası

JSON “gun” özniteliğindeki sayılar gün adlarını açıklar : 1 Pazar, 2 Pazartesi, 3 Salı, 4 Çarşamba, 5 Perşembe, 6 Cuma, 7 Cumartesi

Swift kodlamasında 2 dakikada bir çalışarak JSON içeriğini çeken fonksiyon bulunmaktadır. Bundan dolayı “dakika” niteliğini 10 dakika aralıkla yazmanız doğru olacaktır. Yani saat 21:10'da notification gönderdiyseniz ikinci bildiriminizi 21:20 olarak güncelleyip, JSON belgenizi tekrar server dosyanıza yükleyin. Server dosya adresinizi sonradan kesinlike değiştirmeyin.

Swift 5 Kodları

Unutmayın: Aşağıdaki kodlarla “Local Notification” göndermek için uygulamanızın kullanıcı tarafından açık olması veya arka planda çalışıyor olması gerekmektedir.

XCode projenizde “local notification” kodlarınızı sadece AppDelegate.swift dosyası içerisinde kullanacaksınız.

AppDelegate.swift

IOS Simulator Testleri

İşin en güzel yanı simülatörden testleri hemen görmek oluyor. JSON belgedeki öznitelikleri dilediğiniz zaman değiştirip “local notification” gönderebiliyorsunuz. Kullanıcı uygulamanızı kullanıyor veya arka planda çalışıyor tutuyor ise bildiriminizle buluşacaktır.

Kodları Genişletmek ve Analiz Eklemek

Örneğin 59. satırda verilen kod dönütlerini kullanarak, kullanıcı analizini kendi web-database içerisine alabilirsiniz. Bu size kalmış. Kendi uygulamam da böyle bir ihtiyacım olmadığı için gerek duymadım. Fakat bu kodları genişletmek ve özelleştirmek sizin ihtiyaçlarınıza bağlı.

İyi günler dilerim.

--

--

N. Erhan Üzümcü

Grafik tasarımcı, yazılım, yazar, müzisyen (W3C EPUB Community Group Member)