7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. iOS 10

iOS 10: Notification Service Extensions

Scroll to top
Read Time: 4 mins

Indonesian (Bahasa Indonesia) translation by Yosef Andreas (you can also view the original English article)

Perkenalan

Ketika menerima sebuah notifikasi dalam sebuah aplikasi iOS, kamu mungkin ingin dapat mendownload konten dalam meresponnya atau mengedit konten sebelum itu ditunjukkan ke user. Dalam iOS 10, Apple sekarang membolehkan aplikasi melakukan ini melalui sebuah Notification Service Extension yang baru.

Sebuah contoh dimana ini bisa berguna adalah jika kamu memiliki sebuah aplikasi pesan dimana back-end server hanya mengidentifikasi berdasarkan suatu kode daripada berdasarkan nama. Untuk sebuah user aplikasimu, nama dan detail lain dari kontak mereka dapat disimpan secara lokal pada perangkatnya. Ketika mengirimkan sebuah notifikasi kepada sebuah user saat mereka menerima sebuah pesan, muatan aslinya bisa mencakup pengidentifikasi pengirim, yang dapat diganti oleh service extension dengan nama kontak.

Dengan tujuan untuk menggunakan jenis extension baru ini, kamu akan perlu mengembangkan aplikasimu dengan Xcode 8 atau terbaru dan iOS 10 SDK.

Mohon dicatat hal-hal di bawah sebelum melanjutkan dengan tip singkat ini:

  • Artikel ini tidak akan menyampaikan sepanjang proses bagaimana mengatur aplikasimu untuk mengirim / menerima local atau push notification.
  • Contoh kode yang ditunjukkan akan menggunakan API yang diperkenalkan dalam UserNotification framework, yang juga baru di iOS 10.
  • Jika kamu ingin belajar bagaimana membuat tampilan custom untuk notification, ini dapat dilakukan melalui notification content extension.

Jika kamu ingin mengetahui lebih lanjut tentang topik ini, maka kamu dapat membaca tutorial lainnya berikut ini:

1. Pengaturan Extension

Proses penambahan notification service extension pada sebuah aplikasi iOS identik dengan extension lainnya. Dalam menu bar Xcode, masuk ke File > New > Target... dan pilih template Notification Service Extension dari menu yang muncul:

Extension TemplateExtension TemplateExtension Template

Dalam menu berikutnya, kamu dapat mengisi informasi spesifik tentang aplikasi.

Setelah extension dibuat, kamu akan melihat dua file (atau tiga jika kamu menggunakan Objective-C) dalam folder extension di Project navigator Xcode.

  • NotificationService.swift, yang akan berisi semua kode dan logic untuk extension.
  • Info.plist, yang berisi detail konfigurasi untuk extension kamu.

File Info.plist berisi semua informasi yang diperlukan untuk extension, jadi hanya file yang perlu diubah adalah file NotificationService.swift.

2. Extension Lifecycle

Setelah kamu mengatur aplikasi dengan notification service extension, proses berikut akan berlangsung untuk tiap notifikasi:

  1. Aplikasi menerima notifikasi.
  2. Sistem membuat sebuah contoh extension class dan menjalankannya dalam background.
  3. Extension menjalankan edit konten dan / atau mendownload beberapa konten.
  4. Jika extension memerlukan waktu lama untuk menjalankan fungsinya, itu akan diberitahu dan langsung dimatikan.
  5. Notification ditampilkan kepada user.

Seperti yang dapat kamu lihat, ketika menggunakan notification service extension, kamu hanya memiliki waktu yang terbatas untuk menjalankan tugas yang diperlukan. Jika extension berjalan terlalu lama, maka itu akan dihentikan oleh sisem, dan notifikasi akan dikirimkan seolah kamu tidak memiliki extension sama sekali.

3. Extension Code

Notification service extension hadir sebagai sebuah object tunggal yaitu sebuah subclass dari class UNNotificationServiceExtension. Class ini mendefinisikan metode berikut:

  • didReceive(_:withContentHandler:) yang menyediakan extension dengan object original UNNotificationRequest. Dalam metode ini, kamu membuat sebuah object UNNotificationContent baru dan melewatkannya sebagai parameter untuk penanganan kelengkapan ketika kamu selesai. Notification content ini dapat dibuat dari awal atau dari copy yang dapat dipindahkan dari original content. Code berikut menunjukkan sebuah contoh implementasi metode ini:
  • serviceExtensionTimeWillExpire yang dieksekusi ketika extension akan dimatikan oleh sistem. Metode ini tidak berisi parameter apapun, jadi jika kamu ingin extension menyediakan sebuah versi in-progress dari content yang dimodifikasi, kamu akan memerlukan untuk tetap menyimpan sebuah referensi ke penanganan kelengkapan dari metode didReceive(_:withContentHandler:). Kode berikut menunjukkan bagaimana ini bisa dicapai dalam extension subclass:

4. Batasan Extension

Hal terpenting terakhir untuk dipertimbangkan ketika menggunakan sebuah notification service extension adalah kondisi dimana extension akan beroperasi.

Pertama-tama, extensionmu hanya akan dijalankan untuk notifikasi yang dikonfigurasi untuk menunjukkan sinyal pada layar kepada user. Ini berarti bahwa tiap notifikasi silent (seperti yang digunakan untuk mengupdate badge aplikasi) tidak akan memicu extension.

Yang kedua, dictionary aps untuk incoming notification yang berada di dalam muatan harus mencantumkan key mutable-content dengan nilai 1.

Konfigurasi notifikasi yang benar akan benar-benar tergantung pada pengaturan aplikasi itu sendiri. Untuk memenuhi kondisi kedua, secara khususnya, beberapa perubahak akan perlu dibuat untuk implementasi push notification sisi server. Jika kamu tidak menggunakan server custom dan malah menggunakan layanan pihak ketiga untuk implementasi push notification, maka saya akan menyarankan menyelidiki dan membaca sepanjang dokumentasi dukungan mereka jika extensionmu tidak berkerja.

Kesimpulan

Melalui class baru UNNotificationServiceExtension dalam iOS 10, sangat sederhana bagimu untuk mengimplementasikan sebuah notification service extension untuk aplikasimu sendiri. Kasus apapun yang kamu gunakan, API ini mengijinkanmu untuk dengan mudah memodifikasi konten notifikasi sebelum ditunjukkan kepada user.

Seperti biasa, pastikan untuk meninggalkan komentar dan feedback pada bagian komentar di bawah. Dan periksa beberapa postingan kami lainnya tentang pengembangan iOS 10 aplikasi Swift!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.