0Pricing
Swift Academy · Ders

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"
_ = silent

Arka 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"
_ = mutable

Uyarı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"
_ = localized

Rozeti 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:

  • aps sözlüğü kullanıcıya gösterilecek içeriği, aynı düzeydeki anahtarlar ise userInfo üzerinden okunan verilerinizi barındırır.
  • Ön plandaki bildirimleri göstermek için willPresent yöntemini, dokunmaları işlemek için didReceive response yöntemini geçersiz kılın.
  • content-available: 1, bir UIBackgroundFetchResult döndüren sessiz arka plan veri çekme işlemlerini başlatır.
  • mutable-content bir hizmet uzantısını etkinleştirir; loc-key metni 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

  1. Anlık Bildirimlere Kaydolma
  2. Bildirim Yüklerini İşleme
  3. Arka Plan Görevleri ve Yenileme
  4. Bildirim Eylemleri ve Kategorileri
← Swift Academy Sayfasına Dön