iOS Push Notification Entegrasyonu

En son güncellendiği tarih: 6 gün önce


Biz geliştiriciler, uygulamalarımız kullanıcılar tarafından düzenli olarak kullanılsın isteriz. Ancak bu kullanıcıya göre değişiklik gösterebiliyor. Her kullanıcının ayıracak yeteri kadar vakti olmayabiliyor. Bu aşamada bildirimler devreye giriyor. Kullanıcıya kendimizi hatırlatmak ve uygulama içerisinde ufak işler yapmak için bildirimleri kullanıyoruz.


Bu yazıda uygulamanızı nasıl bildirim alabilecek hale getirebileceğinizi öğreneceksiniz.


Başlarken:

Bu yazıda okuduklarınızı gerçekleştirebilmek ve bildirim alabilmek için öncelikle 3 şeye ihtiyacınız var:

  • iOS işletim sistemine sahip bir adet cihaz: Bildirimler simülatörde çalışmıyor. Bu yüzden gerçek bir cihaza ihtiyacımız var.

  • Apple Developer Program üyeliği: Bildirim gönderebilmek için uygulamamız adına üretilmiş bir adet sertifikaya ihtiyacımız var. Sertifika üretimi sadece bu üyelik ile yapılabiliyor.

  • Knuff: Bildirim gönderebilmek ve alabilmek için bu programa ihtiyacımız var. Programı yüklemek için buraya tıklayabilirsiniz.

Şimdi uygulamamızda bildirimleri görebilmek için geliştirmelerimizi yapmaya başlayalım.


Part 1:

Apple Developer hesabımıza giriş yaparak başlıyoruz.

Giriş yaptıktan sonra menüden “Certificates, Identifiers & Profiles” kısmına tıklıyoruz, ardından sol menüden Identifiers'ı seçip üstteki “+” butonuna tıklıyoruz. (Fotoğraf 1)

Fotoğraf 1

Register a New Identifier ekranındaki seçeneklerden AppIDs'i seçiyor ve Continue diyoruz. (Fotoğraf 2)

Fotoğraf 2

Platform olarak iOS seçiyoruz. Description bölümüne genel bir isim veriyoruz. Proje buraya yazdığımız isim ile görünecek. Daha sonra "Bundle ID" kısmından “Explicit” seçeceğini seçiyoruz ve uygulamamız için bir bundle id belirliyoruz. Burası önemli çünkü Xcode ile projemizi oluştururken burada yarattığımız Bundle ID’yi kullanacağız. (Fotoğraf 3)

Fotoğraf 3

App Services altından Push Notifications’ı seçiyoruz ve Continue butonuna tıklıyoruz.

Girdiğimiz bilgileri kontrol ediyor ve App ID oluşturma adımını tamamlıyoruz. (Fotoğraf 4)

Fotoğraf 4


Part 2:

Xcode ile yeni bir proje yaratıyoruz.

Yarattıktan sonra project navigator altında projemize tıklıyoruz. Targetlar altından uygulamamızı seçip “General” tabı altında bundle identifier kısmını ilk adımda App ID oluştururken belirlediğimiz Bundle ID ile değiştiriyoruz. Daha sonra “Capabilities” kısmından “Push Notifications” ayarını açıyoruz.

AppDelegate.swift’i açıyoruz. En üste “import UserNotifications” yazıyoruz.

Aşağıdaki metodu AppDelegate’ın sonuna ekliyoruz.


Burada kullandığımız keywordleri biraz açalım.

1-) UNUserNotificationCenter: Uygulama içinde bildirim ile ilgili işleri kontrol ediyor.

2-) requestAuthorization(options:completionHandler:): Kullanıcıdan uygulamanın bildirim alabilmesi için izin istiyor. Options parametreleri uygulama içinde kullanmak istediğimiz bildirim özelliğini iletmemize yarıyor. 7 çeşit bildirim özelliği var. Bunlar:

  • badge: Uygulamanın sağ üst köşesinde sayı gösteriyor.

  • sound: Bildirim ile birlikte ses çıkarıyor.

  • alert: Bildirime yazı eklenmesini sağlıyor.

  • carPlay: Yeni arabalarda kullanılan CarPlay özelliği için bildirim atılıyor.

  • criticalAlert: Sessiz ve rahatsız etme özelliğine takılmadan uygulamanın bildirim almasını sağlıyor.

  • providesAppNotificationSettings: Uygulama içi bildirim ayarı için özel bir buton sağlıyor.

  • provisional: Kullanıcıdan izin almadan bildirim gönderilmesini sağlıyor. Ancak bu bildirim sessiz bir şekilde bildirim merkezinde görünüyor.

3-) Granted, error: Bu kısım requestAuthorization metodunun completionHandler’ı. requestAuthorization metodu tamamlandığında dönüyor. Granted ile izin alınıp alınmadığını, error ile metod koşulurken herhangi bir hata oluşup oluşmadığını dönüyor.

Ardından application(_:didFinishLaunchingWithOptions:) metodu içinde return’den önce registerForPushNotifications() metodunu çağırıyoruz.

Build edip çalıştırıyoruz. Aşağıdaki gibi bir ekran göreceğiz. "Allow" butonuna basıyoruz ve artık uygulamamız bildirimleri gösterebilir. (Fotoğraf 5)

Fotoğraf 5


Part 3:

Kullanıcıdan izni aldık ve artık bildirim göndermeye hazırız. Şimdi APNS(Apple Push Notification Service)’e uygulamamız ile register olmamız gerekiyor. Yazdığımız registerForPushNotifications() metodu APNS’e register olma işlemini başlatıyor. Register olma işlemi tamamlandığında iOS, işlem başarılı tamamlandıysa application(_:didRegisterForRemoteNotificationsWithDeviceToken:) metodunu, eğer hata alındıysa application(_:didFailToRegisterForRemoteNotificationsWithError:) metodunu call ediyor.

application(_:didRegisterForRemoteNotificationsWithDeviceToken:) metodu içinden deviceToken alarak işlemimize devam edeceğiz. Bu deviceToken her uygulama için o device’e özel olarak APNS tarafından oluşturuluyor. Bir nevi adres. Bu token ile bildirimin nereye gideceği belirleniyor. Metodumuzu aşağıdaki şekilde düzenliyoruz ve console’dan deviceToken’ımızı alıyoruz. Test ederken bu token’a ihtiyacımız olacak.


Part 4:

Bu adımda uygulamamıza bildirim gönderebilmek için APNS sertifikası oluşturacağız. Apple Developer hesabımıza giriş yapıyoruz.

Giriş yaptıktan sonra menüden “Certificates, Identifiers & Profiles” kısmına tıklıyoruz, ardından sol menüden Certificates'i seçip üstteki “+” butonuna tıklıyoruz. (Fotoğraf 6)

Fotoğraf 6

Bir sonraki ekranda Apple Push Notificiation service SSL (Sandbox & Production)’ı seçiyoruz. (Fotoğraf 7)

Fotoğraf 7

Devamında önceden oluşturduğumuz app id’yi seçiyoruz. (Fotoğraf 8)

Fotoğraf 8

Daha sonraki adımda bizden bir adet CSR dosyası isteyecek. Bunun için bilgisayarımızdan Keychain Access (Anahtar Zincir Erişimi) uygulamasını açıyoruz. Resimdeki gibi “Sertifika Otoritesinden Sertifika İste” diyoruz. (Fotoğraf 9)

Fotoğraf 9

Mail adresimizi girdikten sonra maile veya diske kaydedip devam ediyoruz. (Fotoğraf 10)

Fotoğraf 10

Daha sonra tekrar apple developer sayfasına geri dönüp oluşturduğumuz CSR dosyasını yüklüyoruz. Daha sonra oluşturduğumuz sertifikayı bilgisayarımıza indiriyoruz.


Part 5:

Knuff

Sertifikayı da oluşturduğumuza göre artık bildirimleri gönderebiliriz. İndirdiğimiz Knuff programını açıyoruz. “Choose identity” yazan yerden bilgisayarımıza indirdiğimiz APNS sertifikasını seçiyoruz. “Token” yazan yere uygulamamızın console kısmından alıp kaydettiğimiz deviceToken’ı yapıştırıyoruz. “Priority” kısmını değiştirmiyoruz ve “Payload” kısmına geliyoruz. Bu kısımda bilmemiz gereken birkaç şey var. APNS server'ına göndereceğimiz istek için bu alanda gördüğünüz gibi bir body oluşturuluyor. Bu kısmı istediğimiz şekilde değiştirerek bildirimimizin içeriğiyle oynayabiliyoruz. Kullanabileceğimiz belli keywordler var. Bunlar:

  • alert: Bildirimimizde yazacak olan yazıları belirlememize yarıyor. İstersek title veya subtitle özelliklerini de kullanarak özelleştirebiliyoruz.

  • badge: Uygulamamızın sağ üst köşesinde rakam göstermek için kullanıyoruz. Eğer 0 olarak gönderilirse icon üzerindeki rakam siliniyor.

  • sound: Uygulamamıza bir ses dosyası yükleyerek bildirim sesini özelleştirebilmemizi sağlıyor.

  • category: Uygulama içinde custom actionlar yapabilmek için kategoriler oluşturuyor.

  • content-available: Bu alanı 1 olarak göndererek silent push notification gönderebiliyoruz.

  • mutable-content: 1 olarak göndererek uygulamaya ekleyeceğimiz bir extension ile gelen bildirimi modify edebiliyoruz.

Dilediğimiz alanları güncelliyor ve “Push” butonuna basarak uygulamamıza bildirimi gönderiyoruz.


Ek:

Bildirim uygulamaya geldiğinde neler olduğundan bahsedelim. iOS AppDelegate içerisinde birkaç metodu tetikliyor ve bildirim ile ilgili bir işlem yapacaksak bu metodlar içerisinde yapıyoruz. Bunlar:

- Eğer uygulamamız çalışmıyorsa ve kullanıcı uygulamayı bildirime basarak açtıysa, bildirim application(_:didFinishLaunchingWithOptions:) metodu içerisine aktarılıyor ve burada işlem yapılıyor.

- Eğer uygulama arkaplanda veya önyüzde çalışıyorsa application(_:didReceiveRemoteNotification:fetchCompletionHandler:) metodu tetikleniyor ve işlemler bunun içerisinde yapılıyor.


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

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

#ios #pushnotification #swift #iospushnotification #knuff


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