Photo Editing Extension: apa itu, fitur ekstensi untuk iOS

Penulis: IT Sectr Diterbitkan: 2026-06-15 Waktu membaca: 9 mnt

Photo Editing Extension — adalah mekanisme iOS yang memungkinkan aplikasi pihak ketiga menambahkan alat pengeditan langsung ke aplikasi Foto sistem. Tidak seperti editor lengkap, ekstensi tidak memuat gambar ke aplikasi terpisah — pengguna menerapkan filter, mengoreksi warna, atau menambahkan efek tanpa meninggalkan antarmuka standar. Menurut Apple Developer Documentation (2025), PhotoKit menyediakan lebih dari 40 API untuk bekerja dengan sumber daya foto, termasuk PHAdjustmentData dan PHContentEditingController.

Poin Utama

  • Photo Editing Extension menyematkan alat pengeditan ke aplikasi Foto standar di iOS tanpa beralih antar program
  • Arsitektur dibangun di atas protokol PHContentEditingController, yang mengelola tampilan antarmuka dan pengambilan gambar asli
  • Ekstensi menggunakan pengeditan non-destruktif — semua perubahan disimpan sebagai AdjustmentData, dan aslinya tetap utuh
  • Untuk bekerja dengan gambar, ekstensi menerima PHContentEditingInput dengan file foto lengkap dan metadata
  • PhotoKit menyediakan akses ke sumber daya foto melalui PHAsset, PHAssetResource, dan PHImageManager

Apa itu Photo Editing Extension di iOS

Photo Editing Extension — adalah jenis ekstensi aplikasi di iOS yang memperkenalkan alat pemrosesan gambar ke antarmuka standar aplikasi Foto. Pengguna membuka gambar, menekan tombol “Edit” dan memilih ekstensi yang diinginkan dari daftar yang terinstal. Setelah pengeditan, hasilnya disimpan kembali ke perpustakaan, dan file asli tetap tersedia untuk pemulihan.

Arsitektur seperti ini memecahkan masalah utama pengalaman pengguna: tidak perlu beralih antar aplikasi, mengekspor dan mengimpor gambar, atau melacak versi. Menurut WWDC 2025, semua ekstensi beroperasi dalam proses terisolasi dengan sandbox sendiri dan waktu eksekusi terbatas — hingga 30 detik per operasi pengeditan.

Ekstensi tidak memiliki akses ke file sembarang di memori perangkat — hanya ke gambar yang secara eksplisit diberikan pengguna melalui antarmuka pemilihan. Ini memastikan keamanan data pengguna saat menggunakan alat pihak ketiga.

PhotoKit: arsitektur dan komponen utama

PhotoKit — adalah framework Apple untuk bekerja dengan media pustaka perangkat, diperkenalkan di iOS 8. Framework ini menyediakan akses terprogram ke sumber daya Foto, termasuk gambar, video, album, dan metadata. Untuk ekstensi pengeditan, PhotoKit berfungsi sebagai lapisan perantara antara penyimpanan dan antarmuka modifikasi.

PHAsset dan PHAssetResource

PHAsset mewakili objek media individual di perpustakaan — foto atau video. Melalui PHAsset, metadata dapat diperoleh: tanggal pengambilan, jenis file, lokasi di peta, dan orientasi kamera. PHAssetResource memberikan akses ke sumber daya dasar — misalnya, file foto asli dalam format RAW atau HEIC.

Untuk ekstensi pengeditan, PHContentEditingInput sangat penting — objek yang berisi file gambar (atau video) lengkap yang tersedia untuk dibaca dan diproses. Ekstensi menerima objek ini pada saat aktivasi dan menggunakannya sebagai bahan sumber.

PHImageManager dan caching

PHImageManager mengelola pemuatan dan caching gambar. Untuk ekstensi pengeditan tidak digunakan secara langsung — ekstensi menerima file lengkap melalui PHContentEditingInput. Namun PHImageRequestOptions memungkinkan konfigurasi parameter permintaan: ukuran, jenis pengiriman (sinkron atau asinkron), dan format hasil.

Menurut Apple, PHImageManager secara otomatis menyimpan thumbnail gambar di RAM, yang mempercepat tampilan ulang pratinjau. Untuk ekstensi pengeditan, disarankan menggunakan PHImageRequestOptionsDeliveryModeHighQualityFormat untuk mendapatkan kualitas gambar terbaik.

swift
let options = PHImageRequestOptions()
options.deliveryMode = .highQualityFormat
options.isSynchronous = true

PHImageManager.default().requestImage(
    for: asset,
    targetSize: .init(width: 1024, height: 1024),
    contentMode: .aspectFill,
    options: options
) { image, _ in
    // gunakan gambar untuk ditampilkan
}

Membuat ekstensi: PHContentEditingController

Setiap Photo Editing Extension mengimplementasikan protokol PHContentEditingController — elemen kontrol pusat ekstensi. Protokol mendefinisikan metode untuk menampilkan antarmuka, mendapatkan data input, dan menyimpan hasil.

Metode utama protokol

beginContentEditing(with:) dipanggil saat memulai sesi pengeditan. Ekstensi menerima PHContentEditingInput dan harus menampilkan antarmuka dengan gambar asli. finishContentEditing(completionHandler:) menyelesaikan pengeditan — ekstensi mengembalikan PHContentEditingOutput dengan file yang dimodifikasi dan AdjustmentData. cancelContentEditing() membatalkan perubahan tanpa menyimpan.

Nuansa penting: pada saat pemanggilan beginContentEditing, ekstensi hanya memiliki akses ke satu versi foto — versi yang diminta oleh pengguna. Tidak dapat mengakses foto atau album lain. Ini adalah batasan sandbox yang diterapkan Apple untuk keamanan.

swift
class PhotoEditingViewController: UIViewController {

    override func beginContentEditing(
        with input: PHContentEditingInput
    ) {
        guard let url = input.fullSizeImageURL else { return }
        let image = CIImage(contentsOf: url)
        displayImage.image = UIImage(ciImage: image)
    }
}

Arsitektur pemisahan

PHContentEditingController memisahkan antarmuka pengeditan dari logika penyimpanan. Proses utama iOS memanggil beginContentEditing, ekstensi menampilkan UI-nya, pengguna melakukan perubahan, kemudian finishContentEditing menghasilkan file baru. Apple merekomendasikan semua pemrosesan intensif sumber daya — filter CIFilter, manipulasi Core Image — dilakukan di thread latar belakang, bukan di thread utama, agar tidak memblokir antarmuka.

Peng editan non-destruktif melalui AdjustmentData

PHAdjustmentData — mekanisme kunci yang memungkinkan pengeditan non-destruktif di Photo Editing Extension. Ini adalah objek yang berisi informasi tentang perubahan yang diterapkan dalam format arbitrer. Ekstensi menyerialisasikan parameter filter, masker, dan pengaturan ke dalam AdjustmentData dan menyimpannya bersama dengan gambar yang dimodifikasi.

Saat membuka ulang foto, ekstensi membaca AdjustmentData, mengembalikan status antarmuka sebelumnya, dan memungkinkan pengguna melanjutkan pengeditan dari tempat yang sama. Jika ekstensi tidak diinstal — foto ditampilkan dalam versi terakhir yang disimpan, dan aslinya disimpan terpisah.

Menurut Apple Documentation, PHAdjustmentData menyimpan formatIdentifier dan formatVersion — string untuk identifikasi format data. Saat memperbarui ekstensi, versi harus diperiksa dan format lama harus diproses dengan benar.

swift
let adjustmentData = PHAdjustmentData(
    formatIdentifier: "com.example.photoediting",
    formatVersion: "1.0",
    data: NSKeyedArchiver.archivedData(
        withRootObject: params,
        requiringSecureCoding: true
    )
)
output.adjustmentData = adjustmentData

Pada saat finishContentEditing, ekstensi menulis AdjustmentData ke objek PHContentEditingOutput bersama dengan file gambar yang dimodifikasi. Sistem kemudian menyimpan kedua komponen: versi untuk ditampilkan dan metadata untuk memulihkan sesi pengeditan.

Integrasi dengan aplikasi Foto

Photo Editing Extension secara otomatis muncul di menu aplikasi Foto setelah menginstal aplikasi yang mengandungnya. Pengguna membuka foto, memilih “Edit”, dan di baris alat bawah ditampilkan semua ekstensi pengeditan yang terinstal — baik sistem maupun pihak ketiga.

Pendaftaran ekstensi

Ekstensi didaftarkan melalui Info.plist aplikasi utama dengan kunci NSExtensionActivationRule, yang menentukan jenis konten apa yang mengaktifkan ekstensi. Untuk editor foto, ActivationRule biasanya memerlukan image — ekstensi tidak akan ditampilkan untuk video atau foto langsung.

Apple merekomendasikan untuk menentukan jenis aktivasi spesifik agar tidak membebani menu pengeditan. Jika ekstensi hanya mendukung JPEG dan HEIC, sebaiknya batasi aktivasi ke format-format ini.

xml
<!-- Info.plist -->
<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.photo-editing</string>
    <key>NSExtensionActivationRule</key>
    <string>SUBQUERY (extensionItems,
        @count <= 1)</string>
</dict>

Interaksi dengan pengguna

Setelah memilih ekstensi, iOS membuat proses terpisah dengan UIViewController kustom yang ditampilkan di atas antarmuka Foto. Pengguna melihat fotonya, alat ekstensi, dan tombol “Batal” / “Selesai”. Ekstensi tidak dapat mengubah navigasi di luar controllernya atau mengakses bagian lain dari sistem.

Menurut Human Interface Guidelines dari Apple, antarmuka ekstensi harus minimal dan fungsional — tanpa iklan, tautan eksternal, dan elemen navigasi yang berlebihan. Disarankan menggunakan UIScrollView untuk menampilkan palet alat agar tidak memenuhi layar.

Pertanyaan yang Sering Diajukan

Bagaimana Photo Editing Extension mendapatkan akses ke foto?

Ekstensi menerima PHContentEditingInput dengan URL file gambar lengkap melalui metode beginContentEditing(with:). Akses diberikan hanya ke satu foto yang dipilih — tanpa hak ke sumber daya perpustakaan lainnya.

Bisakah ekstensi mengubah asli foto?

Tidak, asli tidak pernah diubah. Ekstensi membuat versi baru melalui PHContentEditingOutput, dan AdjustmentData menyimpan parameter perubahan untuk kemungkinan kembali ke keadaan semula.

Jenis file apa yang didukung Photo Editing Extension?

Ekstensi bekerja dengan semua format yang didukung PhotoKit: JPEG, HEIC, RAW, PNG, TIFF, dan Live Photos. Batasan ditetapkan melalui NSExtensionActivationRule di Info.plist ekstensi.

Berapa banyak waktu yang diberikan untuk pengeditan?

iOS mengalokasikan hingga 30 detik untuk menjalankan operasi finishContentEditing. Jika melebihi batas, ekstensi dihentikan secara paksa dan perubahan tidak disimpan. Pemrosesan latar belakang dengan CIFilter tidak memperpanjang waktu ini.

Bisakah Core Image dan Metal digunakan di ekstensi?

Ya, Core Image (CIFilter) dan Metal (untuk shader kustom) didukung sepenuhnya. Apple merekomendasikan untuk memindahkan komputasi berat ke thread latar belakang melalui Grand Central Dispatch.

Kesimpulan

  • Photo Editing Extension — adalah alat pengeditan tertanam di aplikasi Foto yang berfungsi tanpa beralih antar aplikasi
  • Arsitektur menggunakan PHContentEditingController untuk mengelola sesi pengeditan dan mendapatkan data input
  • PhotoKit menyediakan PHAsset, PHImageManager, dan PHContentEditingInput untuk akses ke sumber daya media perangkat
  • PHAdjustmentData memastikan pengeditan non-destruktif — serialisasi parameter perubahan dengan kemungkinan pemulihan
  • Ekstensi beroperasi di sandbox dengan batas 30 detik dan akses hanya ke satu foto per sesi
  • Core Image, Metal, dan semua format PhotoKit didukung: JPEG, HEIC, RAW, PNG, TIFF, dan Live Photos

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga