Başlangıç > iOS > swift ile notification kullanımı

swift ile notification kullanımı


Merhaba
Bugün swift ile yazdığımız uygulamalarımızda kullanabilceğimiz zaman zaman ihtiyacımız olan ve bir konu veya içeriği bize hatırlatması için kullandığımız “Notification (Bildirim)” özelliğine bakacağız. Bu özelliği test etmek için de  basit olarak bir bildirim gönderen uygulama yapalım.

Uygulamamıza gönderecek olduğumuz bildirimin başlığını ve detayını girebileceğimiz iki adet textfiled ekleyelim ve sonrasında ise bu bildirimin ne zaman bize gelmesini istiyorsak onu ayarlamak için de bir adet datepicker ekleyelim. Tüm ayarlamalardan sonra bildirim gönder işlemi ile uygulama üzerinde yazdığımız bildirim başlık ve detayını belirtiğimiz tarihde bize gelmesi için bildirim gönder butonu ile işlemimizi tamamlayalım.

Şimdi uygulamamızı hazırlamaya başlayabiliriz.

Buradan yeni bir Xcode projesi oluşturalım.

Buradan single view app seçiminden sonra uygulamamızın adını verip işlemimize deva edelim.

Bu aşamdan sonra uygulamamız hazır ve biz kodlamamıza başlayalım. Öncelikle notification özelliğini aktif etmek için “AppDelegate.swift” içerisine “UserNotifications” bilgisini eklememiz gerekiyor bu işlem sonrasında da “didFinishLaunchingWithOptions” içerisinde notification özelliğini aktif etmemiz lazım ve bu özellik uygulama ilk çalıştığında kullanıcıya notification için izin verip vermediğini soracaktır. Daha sonra gelen bildirimleri sıfırlamak içinde uygulama aktif olduğunda yani “applicationDidBecomeActive” içersinde de düzenleme yapmalıyız. Bu işlemere ait kodlar aşağıdaki gibidir.

[AppDelegate.swift]

//
//  AppDelegate.swift
//  Notification
//
//  Created by Samet ÇELİKBIÇAK on 24.03.2018.
//  Copyright © 2018 Samet ÇELİKBIÇAK. All rights reserved.
//

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (success, error) in
            if error != nil {
                application.registerForRemoteNotifications()
            }
        }
        return true
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        if UIApplication.shared.applicationIconBadgeNumber > -1 {
            UIApplication.shared.applicationIconBadgeNumber = -1
            UserDefaults.standard.set(0, forKey: "bildirimSayisi")
        }
    }

}

AppDelegate.swift içindeki düzenlemeler bittikten sonra artık asıl kodlama yapacağımız yere ViewController.swift içerisine bakalım. Buraya yukarıda bahsettiğim kullanacak olduğumuz değişkenlerin tanımlamalarını yaptık ve bu değişkenleri değerleri ile notification gönderimi için gerekli olan kodlarımızı yazdık.

[ViewController.swift]

//
//  ViewController.swift
//  Notification
//
//  Created by Samet ÇELİKBIÇAK on 24.03.2018.
//  Copyright © 2018 Samet ÇELİKBIÇAK. All rights reserved.
//

import UIKit
import UserNotifications

class ViewController: UIViewController {
    
    
    @IBOutlet weak var bildirimBaslikTextField: UITextField!
    @IBOutlet weak var bildirimDetayTextField: UITextField!
    @IBOutlet weak var bildirimTarihDatePicker: UIDatePicker!
    
    var bildirimSayisi: Int = UserDefaults.standard.integer(forKey: "bildirimSayisi")
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }
    
    
    
    func BildirimGonder (title titleText: String, body bodyText:String, date notificationDate:Date) {
        let center = UNUserNotificationCenter.current()
        let content = UNMutableNotificationContent()
        content.title = titleText
        content.body = bodyText
        content.sound = UNNotificationSound.default()
        content.badge = (self.bildirimSayisi + 1) as NSNumber
        BildirimSayisiArttir(bildirimSayisi: self.bildirimSayisi + 1)
        let trigerDate = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute,], from: notificationDate)
        let trigger = UNCalendarNotificationTrigger(dateMatching: trigerDate, repeats: false)
        let identifier = UUID().uuidString
        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
        
        center.add(request) { (error) in
            if error != nil {
                print("BildirimGonder Hata: \(String(describing: error))")
            }
        }
    }
    
    func BildirimSayisiArttir(bildirimSayisi: Int) {
        if bildirimSayisi > -1 {
            self.bildirimSayisi = bildirimSayisi
            UserDefaults.standard.set(self.bildirimSayisi, forKey: "bildirimSayisi")
        } else {
            UIApplication.shared.applicationIconBadgeNumber = -1
        }
    }
    
    
    @IBAction func bildirimGonder(_ sender: Any) {
        BildirimGonder(title: bildirimBaslikTextField.text!, body: bildirimDetayTextField.text!, date: bildirimTarihDatePicker.date)
    
        let alert = UIAlertController(title: "Bildirim", message: "Bildirim Ayarlandı", preferredStyle: .alert)
        let action = UIAlertAction(title: "Tamam", style: .default, handler: nil)
        alert.addAction(action)
        present(alert, animated: true, completion: nil)
    }
    
    
}

Yukarıdaki kodlarda da görüleceği gibi bildirim gönderme işlemi bu kadar basit. Öncelikle bildirimlerimiz için bir UNUserNotificationCenter.current() komutu ile bir center oluşturuyoruz, daha önce bildirim içeriği için UNMutableNotificationContent() komutu ile bir content oluşturuyoruz. Daha sonra bu bildirimin bize ne zaman geleceğini ayarlama adımında ise UNCalendarNotificationTrigger komutunu kullanıyoruz. Gerekli tüm ayarlamaları yaptıktan sonra bildirimimiz için UNNotificationRequest komutu ile bir kayıt oluşturuyoruz. Herşey bu kadar ve uygulamamızı çalıştırdığımızda ise ilk olarak aşağıdaki gibi bir ekran geliyor ve bizden izin istiyor.

Bu izini verdikten sonra şimdi sırada istediğimiz zamana bir kayıt oluşturmak.

Gerekli alanları doldurum zaman seçtikten sonra ise, uygulama bildirim zamanı geldiğinde bize bildirim gösteriyor. Bu aşamadan sonra bildirim gönder butonuna basınca uygulamamızdan çıkıp ana ekranda vaktin gelmesini bekleyelim ve bildirimi görelim.

Bildirim geçtikten sonra ise uygulamamız üzerinde bize gelen bildirimleri gösteren sayıyı görebiliriz.

Biz telefonla işlem yapıyorsa bu şekilde bir bildirim geliyor. Ama telefon ekran kapalı konumda bekliyorsa bildirim geldiğinde aşağıdaki gibi bir durum oluşuyor.

Bildirim merkezinden bildirimlere baktığımızda ise aşağıdaki gibi görebiliriz.

Bu durumda gelen bir bildirim için artık aşağıdaki gibi işlemleri yapabiliriz. Bildirimi sağ doğru çektiğimizde gelen bildirimi açma işlemini görebiliriz.

Gelen bildirimi sola doğru çektiğimizde ise görüntüleme ve silme işlemini görebiliriz.

Yukarıdaki işlemlerde olduğu gibi çok basit birkaç işlem ile uygulamamıza bildirim özelliği ekledik ve gelen bildirimler ile ne yapabilceğimizi gördük.

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: