SwiftUI ile iOS uygulamanıza bildirim izinleri eklemek, kullanıcılarınıza etkileşimli ve zamanında bilgiler sunmanın harika bir yolu. UNUserNotificationCenter
sınıfını kullanarak basit bir şekilde bildirim izinleri talep edebilir ve kullanıcının yanıtına göre uygun işlemleri gerçekleştirebilirsiniz.
1. Bildirim Merkezine Erişim Sağlama
İlk adım olarak, bildirim merkezine erişim sağlamamız gerekiyor. Bu işlem, UNUserNotificationCenter.current()
yöntemi ile gerçekleştirilir.
let center = UNUserNotificationCenter.current()
2. İzin Talep Edip, Yanıtı İşleme
Bildirim izinlerini talep etmek için requestAuthorization
yöntemini kullanıyoruz. Bu yöntem, kullanıcının bildirim türlerini belirlemesine olanak tanır. Kullanıcının izin verip vermediğine bağlı olarak, uygulamanızda ilgili özellikleri etkinleştirip devre dışı bırakabilirsiniz. Örneğin, aşağıdaki kod parçası, uygulamaya bildirim penceresi, ses ve rozet gösterme izni talep eder:
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
// İzin yanıtını işle
if let error = error {
print(error.localizedDescription)
}
if granted {
// Kullanıcı izin verdi, ilgili özellikleri etkinleştir
} else {
// Kullanıcı izin vermedi, ilgili özellikleri devre dışı bırak veya kullanıcıya bilgi ver
}
}
Böylece, basit bir şekilde bildirim izinleri talep edebilir ve kullanıcının izin durumuna göre uygulamanızda uygun işlemleri gerçekleştirebilirsiniz. İzin talebinde bulunurken kullanıcıya neden bildirim izni istediğinizi anlatan bir açıklama eklemek isteyebilirsiniz. Bu açıklama, Info.plist dosyanızda
NSLocalNotificationsUsageDescription
anahtarı ile sağlanmalıdır. (Açıklama eklemek zorunda değilsiniz. Xcode varsayılan bir mesajı, siz eklemezseniz kullanıcıya gösterir.)
3. Xcode Push Notifications Capabilities Konfigürasyonu
Push Notifications için gerekli kod bloklarını yazdıktan sonra Xcode içerisinden Targets -> Signing & Capabilities sekmesinden sağ üst köşede bulunan + menüsü kullanarak Push Notifications özelliğini projeye eklemeniz gerekiyor.
4. SwiftUI’da Asenkron Olarak Kullanma
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationStack {
VStack {
Text("Merhaba Push Notifications")
}
.onAppear{
Task {
let center = UNUserNotificationCenter.current()
do {
let success = try await center.requestAuthorization(options: [.alert, .badge, .sound])
if success {
UIApplication.shared.registerForRemoteNotifications()
print("Push notification için izin verildi")
} else {
print("Push notification için izin verilmedi!")
}
} catch {
print("Error")
}
}
}
.padding()
.navigationTitle("Push Notifications")
}
}
}
Push Notifications için SwiftUI ile kullanıcıdan nasıl izin talep etmemiz gerektiğini öğrenmiş olduk. Bildirimleri göndermek için Apple Developer üzerinden development ve production ortamları için sertifikalar üretip CloudKit -> Push Notificaton Console’u kullanabilirsiniz.