0Pricing
Swift Academy · Ders

Uygulama Uzantılarına Genel Bakış

Paylaşma, eylem ve diğer uzantıları anlayın.

Uygulama Uzantılarına Genel Bakış, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. 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.

Uygulama Uzantıları Nedir

Bir uygulama uzantısı, uygulamanızın diğer uygulamaların veya sistem yüzeylerinin içinde işlev sunmasını sağlar; içerik paylaşma, özel klavyeler, Spotlight dizinleme ve daha fazlası buna dahildir. Her uzantı, sistem tarafından tanımlanan kendi yaşam döngüsüne, korumalı alanına ve giriş noktasına sahip ayrı bir hedeftir.

// Extensions run in their own process, launched
// by the host (Photos, Safari, Messages, the system),
// not by your main app.

Ana Uygulama, Kapsayıcı ve Korumalı Alan

Üç taraf vardır: ana uygulama uzantıyı çağırır, kapsayıcı uygulamanız onu içerir ve uzantının kendisi korumalı alanda çalışır. Uzantı uygulamanızla serbestçe iletişim kuramaz; birbirleriyle doğrudan bellek erişimiyle değil, bir Uygulama Grubu üzerinden iletişim kurarlar.

import Foundation
// Container app + Extension target share data via
// an App Group, e.g. group.com.example.app
let group = "group.com.example.app"
_ = group

Paylaşım Uzantıları

Bir Paylaşım Uzantısı, sistemin paylaşım sayfasında görünür ve kullanıcıların herhangi bir uygulamadaki içeriği (metin, URL'ler, görseller) uygulamanıza göndermesine olanak tanır. Uzantı bir görünüm denetleyicisinin alt sınıfını oluşturur veya onu barındırır ve paylaşılan öğeleri uzantı bağlamından okur.

import Foundation
// Share extension reads incoming items:
// extensionContext?.inputItems
//   each NSExtensionItem has attachments (NSItemProvider)
let share = "appears in the share sheet"
_ = share

Paylaşılan Öğeleri Okuma

Paylaşılan içerik, NSItemProvider ekleri olarak gelir. Tür tanımlayıcısını denetler ve değeri asenkron olarak yüklersiniz. Paylaşım uzantısı, kullanıcının paylaştığı URL'yi veya görseli bu şekilde alır.

import UniformTypeIdentifiers
func handle(_ provider: NSItemProvider) {
    if provider.hasItemConformingToTypeIdentifier(
        UTType.url.identifier) {
        provider.loadItem(
            forTypeIdentifier: UTType.url.identifier) {
            value, _ in
            print("shared url:", value ?? "none")
        }
    }
}

Eylem Uzantıları

Bir Eylem Uzantısı, içeriği bulunduğu yerde dönüştürür veya görüntüler; seçili metni çevirebilir, bir PDF'ye açıklama ekleyebilir ve ana uygulamaya sonuç döndürebilir. Paylaşım uzantısından farklı olarak içeriği başka bir yere göndermek yerine içeriğin üzerinde işlem yapmak için tasarlanmıştır.

import Foundation
// Action extension may return modified items:
// extensionContext?.completeRequest(
//     returningItems: outputItems)
let action = "acts on content, can return a result"
_ = action

Bildirim Hizmeti Uzantısı

Bir Bildirim Hizmeti Uzantısı, gelen ve mutable-content: 1 içeren anlık bildirimleri, görüntülenmeden önce değiştirmek üzere yakalar; kısa bir süre içinde body'yi şifresinden çözebilir, bir medya eki indirebilir veya başlığı yeniden yazabilir.

import UserNotifications
// Override in UNNotificationServiceExtension:
// didReceive(_ request:, withContentHandler:)
//   mutate bestAttemptContent, then call the handler
let service = "modifies push before it shows"
_ = service

Bildirim İçeriği Uzantısı

Bir Bildirim İçeriği Uzantısı, genişletilmiş bir bildirim için özel bir kullanıcı arayüzü (harita, medya oynatıcı, etkileşimli denetimler) sunar. Bu arayüz, kullanıcı başlığa uzun bastığında gösterilir. Uzantı bir bildirim kategorisine bağlanır.

import UserNotifications
// UNNotificationContentExtension renders a custom view
// for a given UNNotificationCategory when expanded.
let content = "custom expanded notification UI"
_ = content

completeRequest Yaşam Döngüsü

Uzantıların ömrü kısadır. İşiniz bittiğinde tamamlandığını bildirmek ve ana uygulamanın uzantıyı kapatmasına izin vermek için extensionContext?.completeRequest(returningItems:completionHandler:) çağrısını yapın. İşlemi iptal etmek için cancelRequest(withError:) kullanın. Süreci açık tutmak kaynakları tüketir ve süreç sonlandırılabilir.

import Foundation
func finish(context: NSExtensionContext?) {
    context?.completeRequest(
        returningItems: [], completionHandler: nil)
}

Diğer Uzantı Noktaları

iOS birçok uzantı noktası sunar: özel klavyeler, belge sağlayıcıları, Spotlight dizinleme, Safari içerik engelleyicileri, Siri niyetleri, fotoğraf düzenleme ve dosya sağlayıcı uzantıları. Her biri, Info.plist içindeki bir NSExtensionPointIdentifier ile bildirilen sistem tarafından tanımlı bir protokole uyar.

// Info.plist of an extension declares its point:
// NSExtension > NSExtensionPointIdentifier
//   e.g. com.apple.share-services
//        com.apple.usernotifications.service
let point = "each extension declares its point"
_ = point

Bellek ve Zaman Sınırları

Uzantılar ana uygulamaya göre daha sıkı sınırlar altında çalışır; daha az bellekleri ve kısa bir gerçek zaman budget'ları vardır. En az işlemi yapın, büyük bellek ayırmalarından kaçının ve mümkün olduğunda ağır işlemleri ortak depolama üzerinden ana uygulamaya devredin.

import Foundation
// Tight memory + short runtime.
// Pattern: extension stages data in the App Group,
// the main app processes it fully on next launch.
let limits = "keep extensions lean and fast"
_ = limits

Hedefler Arasında Kod Paylaşma

Mantığı tekrarlamaktan kaçınmak için ortak modelleri ve yardımcıları, hem uygulamanın hem de uzantının bağımlı olduğu bir çatıya veya Swift paketine yerleştirin. Yalnızca her hedefin ihtiyaç duyduğu öğeleri işaretleyin; uzantı aynı kodu kopyalamadan bağlar.

import Foundation
// Shared Swift package 'AppCore' linked by:
//   - main app target
//   - share extension target
//   - widget extension target
let shared = "one source of truth for models"
_ = shared

Hızlı Kontrol

Bir uzantının kapsayıcı uygulamasıyla nasıl iletişim kurduğunu hatırlayın.

Özet

Uygulama uzantılarını incelediniz:

  • Uzantılar, bir ana uygulama tarafından başlatılan ayrı ve korumalı alanlarda çalışan hedeflerdir; türleri arasında paylaşım, eylem, bildirim hizmeti ve bildirim içeriği uzantıları bulunur.
  • Gelen içeriği NSItemProvider aracılığıyla okuyun ve completeRequest ile tamamlayın.
  • Her uzantı NSExtensionPointIdentifier değerini bildirir ve sıkı bellek/zaman sınırları altında çalışır.
  • Verileri bir Uygulama Grubu üzerinden paylaşın ve ortak bir paket aracılığıyla kodu yeniden kullanın.

Sıkça Sorulan Sorular

“Uygulama Uzantılarına Genel Bakış” dersi ücretsiz mi?

Evet — “Uygulama Uzantılarına Genel Bakış” 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.

“Uygulama Uzantılarına Genel Bakış” dersinde ne öğreneceğim?

Paylaşma, eylem ve diğer uzantıları anlayın. 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 3. dersidir.

“Uygulama Uzantılarına Genel Bakış” 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. WidgetKit Widget'ı Oluşturma
  2. Zaman Çizelgesi Sağlayıcıları ve Anlık Görüntüler
  3. Uygulama Uzantılarına Genel Bakış
  4. Uygulama Niyetleri ve Kestirmeler
← Swift Academy Sayfasına Dön