Bildirim Yüklerini İşleme
Ön plandaki ve arka plandaki bildirimlere yanıt verin.
Bildirim Yüklerini İşleme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Yük Verisinin Yapısı
Uzak bildirim, sunucunuzun APNs'ye gönderdiği bir JSON sözlüğüdür. Ayrılmış aps anahtarı, kullanıcıya gösterilecek içeriği — uyarı, ses ve rozet — barındırırken, aynı düzeydeki diğer anahtarlar açılacak bir öge kimliği gibi özel verilerinizi taşır.
// Example payload JSON:
// {
// "aps": { "alert": { "title": "Hi", "body": "..." },
// "sound": "default", "badge": 1 },
// "itemId": "42"
// }aps Sözlüğü
aps içinde alert bir dize veya başlık/gövde/alt başlık nesnesi olabilir. sound, badge ve content-available ile mutable-content gibi bayraklar da burada yer alır. aps dışındaki her şeyi siz tanımlarsınız.
// aps keys:
// alert: { title, subtitle, body }
// sound: "default" or critical sound object
// badge: Int
// content-available: 1 (silent / background)
// mutable-content: 1 (allow modification)Ön Planda Teslim
Varsayılan olarak, uygulamanız ön plandayken gelen bir bildirim bastırılır. Yine de göstermek için temsilcinin willPresent yöntemini uygulayın ve başlık bandı ile ses gibi istediğiniz sunum seçeneklerini döndürün.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification
) async -> UNNotificationPresentationOptions {
return [.banner, .sound, .badge]
}Dokunmaya Yanıt Verme
Kullanıcı bir bildirime dokunduğunda (uygulama arka planda olsa veya sonlandırılmış olsa da) temsilcinin didReceive response yöntemi çalışır. Yük verisini okuyup doğru ekrana yönlendirme işlemini burada yaparsınız.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse
) async {
let info = response.notification.request
.content.userInfo
if let id = info["itemId"] as? String {
print("open item", id)
}
}userInfo Verisini Okuma
Özel anahtarlarınız da dahil olmak üzere yük verisinin tamamı, [AnyHashable: Any] sözlüğü olan content.userInfo olarak sunulur. Her değerin türünü dikkatle dönüştürün; hatalı bir yük verisi uygulamanın çökmesine neden olabileceğinden zorla açma kullanmayın.
import UserNotifications
func route(_ userInfo: [AnyHashable: Any]) {
guard let screen = userInfo["screen"] as? String
else { return }
switch screen {
case "profile": print("go to profile")
case "cart": print("go to cart")
default: break
}
}Sessiz (Arka Plan) Bildirimleri
content-available: 1 ayarlanıp uyarı çıkarıldığında, uygulamayı kullanıcı arayüzü olmadan veri çekmek üzere arka planda uyandıran sessiz bir push bildirimi oluşturulur. Bunlar sistem tarafından kısıtlanır ve Uzak bildirimler arka plan kipini gerektirir.
// Silent payload — no alert, just a wake-up:
// { "aps": { "content-available": 1 }, "sync": true }
let silent = "content-available wakes app quietly"
_ = silentArka Plan Veri Çekme İşleyicisi
Sessiz bir push bildirimi, uygulama temsilcisinin didReceiveRemoteNotification eşzamansız yöntemine ulaşır. Veriyi çekip bir UIBackgroundFetchResult döndürürsünüz; böylece sistem yeni verinin gelip gelmediğini bilir ve gelecekteki uyandırmalar için bütçe ayırabilir.
import UIKit
func application(
_ app: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any]
) async -> UIBackgroundFetchResult {
// fetch fresh data here
return .newData
}Değiştirilebilir İçerik ve Hizmet Uzantıları
mutable-content: 1 ile bir Bildirim Hizmeti Uzantısı, push bildirimi gösterilmeden önce araya girebilir — gövdenin şifresini çözmek, bir görsel eki indirmek veya başlığı yeniden yazmak için. Uzantının işlemi tamamlamak için kısa bir süresi vardır.
// Service extension entry point (UNNotificationServiceExtension):
// override didReceive(_:withContentHandler:)
// modify bestAttemptContent, then call contentHandler
let mutable = "mutable-content enables interception"
_ = mutableUyarıyı Yerelleştirme
Metni sunucu tarafında yerelleştirmek için uygulamanızın yerelleştirilebilir dizelerindeki anahtarlara başvuran title-loc-key ve loc-key değerlerini, yerine konacak değerler için de loc-args değerini gönderin. Aygıt, önceden çevrilmiş metin göndermenize gerek kalmadan bunları kullanıcının dilinde görüntüler.
// Localized alert payload:
// "alert": {
// "loc-key": "NEW_MESSAGE",
// "loc-args": ["Ada"]
// }
let localized = "loc-key resolves on device"
_ = localizedRozeti Güncelleme
badge değeri, uygulama simgesinde gösterilecek sayıyı belirler. badge: 0 göndermek bu sayıyı temizler. Kullanıcı içeriği okuduktan sonra kod içinde setBadgeCount kullanarak da ayarlayabilir ve rozeti okunmamış içerik durumuyla eşit tutabilirsiniz.
import UserNotifications
func clearBadge() async {
try? await UNUserNotificationCenter.current()
.setBadgeCount(0)
}Sağlam Bir İşleyici
Parçaları birleştirin: ön planda gösterin, dokunmaya göre yönlendirin ve her tür dönüşümünü doğrulayın. İşleyici beklenmeyen yük verileri nedeniyle asla çökmez ve elde edebildiği tüm bilgileri her zaman çıkarır.
import UserNotifications
func handleTap(_ response: UNNotificationResponse) {
let info = response.notification.request
.content.userInfo
guard let id = info["itemId"] as? String else {
print("no item id; open home")
return
}
print("navigate to item", id)
}Hızlı Kontrol
Bir bildirim dokunuşuna nasıl yanıt verileceğini hatırlayın.
Özet
Yük verilerini işlemeyi öğrendiniz:
apssözlüğü kullanıcıya gösterilecek içeriği, aynı düzeydeki anahtarlar iseuserInfoüzerinden okunan verilerinizi barındırır.- Ön plandaki bildirimleri göstermek için
willPresentyöntemini, dokunmaları işlemek içindidReceive responseyöntemini geçersiz kılın. content-available: 1, birUIBackgroundFetchResultdöndüren sessiz arka plan veri çekme işlemlerini başlatır.mutable-contentbir hizmet uzantısını etkinleştirir;loc-keymetni aygıt üzerinde yerelleştirir.
Sıkça Sorulan Sorular
“Bildirim Yüklerini İşleme” dersi ücretsiz mi?
Evet — “Bildirim Yüklerini İşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Bildirim Yüklerini İşleme” dersinde ne öğreneceğim?
Ön plandaki ve arka plandaki bildirimlere yanıt verin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Bildirim Yüklerini İşleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Anlık Bildirimlere Kaydolma
- Bildirim Yüklerini İşleme
- Arka Plan Görevleri ve Yenileme
- Bildirim Eylemleri ve Kategorileri