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

Sebuah Pengenalan Framework UserNotifications

Scroll to top
Read Time: 10 mins

Indonesian (Bahasa Indonesia) translation by Ilham Saputra (you can also view the original English article)

Pengantar

Dengan iOS 10, tvOS 10, dan watchOS 3, Apple memperkenalkan sebuah kerangka kerja baru yang disebut kerangka UserNotifications. Set baru api menyediakan cara yang bersatu, berorientasi objek bekerja dengan pemberitahuan lokal dan remote pada platform ini. Ini sangat berguna karena, dibandingkan dengan API yang ada, pemberitahuan lokal dan jarak jauh sekarang ditangani sangat mirip, dan mengakses konten pemberitahuan tidak lagi dilakukan hanya melalui kamus.

Dalam tutorial ini, saya akan pergi melalui dasar-dasar kerangka kerja ini baru dan menunjukkan bagaimana Anda dapat dengan mudah mengambil keuntungan dari itu untuk mendukung pemberitahuan untuk aplikasi Anda.

Tutorial ini memerlukan bahwa Anda menjalankan Xcode 8 dengan SDK terbaru iOS, tvOS dan watchOS.

1. mendaftar untuk pemberitahuan

Langkah pertama untuk pemberitahuan pendukung app akan meminta izin dari pengguna. Seperti iOS versi sebelumnya, ketika menggunakan kerangka UserNotifications, itu adalah praktek yang umum untuk melakukan hal ini segera setelah selesai app meluncurkan.

Sebelum menggunakan salah satu api UserNotifications, Anda akan perlu untuk menambahkan pernyataan impor berikut ke file kode Swift yang mengakses kerangka:

Selanjutnya, untuk mendaftar aplikasi Anda untuk pemberitahuan, Anda akan perlu untuk menambahkan kode berikut ke AppDelegate Anda application(_:didFinishLaunchingWithOptions:) metode:

Awalnya dengan kode ini, kami mendapatkan referensi ke objek UNUserNotificationCenter saat ini. Selanjutnya, kami mengkonfigurasi UNAuthorizationOptions kami dengan kemampuan pemberitahuan kami ingin aplikasi kami untuk memiliki. Harap dicatat bahwa Anda dapat memiliki kombinasi pilihan di sini — misalnya, hanya peringatan atau keduanya lencana dan suara.

Menggunakan keduanya benda-benda ini, kami kemudian meminta otorisasi untuk kami app untuk menampilkan pemberitahuan dengan memanggil metode requestAuthorization(options:completionHandler:) pada contoh UNUserNotificationCenter kami. Penyelesaian pengendali blok kode memiliki dua parameter dioperkan ke dalamnya:

  • Nilai Bool menandakan Apakah otorisasi diberikan oleh pengguna.
  • Kesalahan opsional objek yang akan berisi informasi jika, untuk beberapa alasan, sistem ini tidak meminta pemberitahuan otorisasi untuk app Anda.

Anda akan melihat bahwa dalam kode di atas, jika otorisasi yang diberikan oleh pengguna, kami kemudian mendaftar untuk pemberitahuan terpencil. Jika Anda ingin menerapkan pemberitahuan push, baris kode ini diperlukan. Anda juga akan harus melakukan sedikit tambahan setup untuk proyek Anda, seperti yang dijelaskan dalam tutorial ini:

Harap dicatat bahwa mendaftar untuk pemberitahuan terpencil akan memanggil UIApplication Panggil metode yang sama seperti pada versi sebelumnya iOS. Sukses, application(_:didRegisterForRemoteNotificationsWithDeviceToken:) akan disebut, dan application(_:didFailToRegisterForRemoteNotificationsWithError:) akan disebut kegagalan.

2. penjadwalan pemberitahuan

Untuk bagian ini tutorial, kami akan berfokus sepenuhnya pada penjadwalan lokal pemberitahuan menggunakan kerangka UserNotifications. Pengiriman pemberitahuan remote push tidak berubah karena pengenalan kerangka kerja baru ini.

Pemberitahuan lokal, sebelum yang dijadwalkan, diwakili oleh instance kelas UNNotificationRequest. Objek jenis ini terdiri dari komponen berikut:

  • Pengenal: tali yang unik yang memungkinkan Anda untuk membedakan individu pemberitahuan dari satu sama lain.
  • Content: objek UNNotificationContent yang berisi semua informasi yang diperlukan untuk menampilkan pemberitahuan Anda, termasuk judul, subjudul, dan nomor lencana aplikasi.
  • Trigger: objek UNNotificationTrigger yang digunakan oleh sistem untuk menentukan kapan notifikasi Anda harus 'dikirim' ke aplikasi Anda.

Untuk memulainya, kami akan melihat berbagai jenis pemicu yang dapat Anda siapkan untuk pemberitahuan lokal. Kelas UNNotificationTrigger adalah kelas abstrak, yang berarti Anda tidak boleh membuat instance secara langsung. Sebagai gantinya, Anda akan menggunakan subclass yang tersedia. Saat ini, kerangka kerja UserNotifications menyediakan tiga untuk Anda:

  • UNTimeIntervalNotificationTrigger, yang memungkinkan pemberitahuan dikirim beberapa waktu setelah menjadwalkannya.
  • UNCalendarNotificationTrigger, yang memungkinkan pemberitahuan akan dikirim pada tanggal tertentu dan waktu, terlepas dari saat itu dijadwalkan.
  • UNLocationNotificationTrigger, yang memungkinkan pemberitahuan untuk dikirim ketika pengguna memasuki atau meninggalkan wilayah geografis yang ditentukan.

Kode berikut memperlihatkan kepada Anda bagaimana Anda bisa membuat pemicu setiap jenis:

Dengan kode diatas, kondisi memicu berikut telah dibuat:

  • timeTrigger akan api satu jam setelah pemberitahuan dijadwalkan. Parameter timeInterval dilewatkan ke dalam UNTimeIntervalNotificationTrigger initialiser diukur dalam menit.
  • calendarTrigger akan berulang kali api setiap hari pukul 10:00 PM. Tepat tanggal dan waktu tembakan memicu dapat dengan mudah diubah dengan memodifikasi properti lainnya objek DateComponents Anda lulus ke UNCalendarNotificationTrigger initialiser.
  • locationTrigger akan api ketika pengguna berjarak 500 meter dari koordinat Ruangan Khusus, dalam ini kasus 40°N 120°E. Seperti yang Anda lihat dari kode, jenis memicu ini dapat digunakan untuk berbagai ukuran koordinat dan/atau wilayah dan juga dapat memicu pemberitahuan pada kedua masuk dan keluar daerah.

Selanjutnya, kita perlu untuk menciptakan konten untuk pemberitahuan. Hal ini dilakukan dengan membuat instance kelas UNMutableNotificationContent. Kelas ini harus digunakan sebagai kelas UNNotificationContent reguler memiliki akses hanya-baca untuk berbagai sifat konten pemberitahuan.

Kode berikut memperlihatkan bagaimana konten untuk pemberitahuan dasar dapat dibuat:

Jika Anda ingin daftar lengkap sifat-sifat yang tersedia untuk Anda, silakan lihat di UNMutableNotificationContent kelas referensi.

Terakhir, kita sekarang hanya perlu untuk membuat objek UNNotificationRequest dan jadwal. Ini dapat dilakukan dengan kode berikut:

Awalnya dengan kode ini, kami membuat permintaan objek dengan melewatkan pengenal, konten objek dan memicu ke initialiser. Kami kemudian memanggil metode add(_:completionHandler:) pada objek UNUserNotificationCenter saat ini dan menggunakan penyelesaian handler untuk melakukan logika yang didasarkan pada apakah atau tidak pemberitahuan dijadwalkan dengan benar.

3. Menerima Pemberitahuan

Bila menggunakan kerangka UserNotifications, pengolahan pemberitahuan masuk ditangani oleh sebuah objek yang Anda tunjuk mematuhi protokol UNUserNotificationCenterDelegate. Objek ini bisa apa saja yang Anda inginkan dan tidak harus mendelegasikan app seperti pada versi sebelumnya iOS.

Satu hal yang penting untuk dicatat, meskipun, adalah bahwa Anda harus mengatur delegasi Anda sebelum aplikasi Anda telah sepenuhnya diluncurkan. Untuk aplikasi iOS, ini berarti bahwa Anda harus menetapkan delegasi Anda dalam baik application(_:willFinishLaunchingWithOptions:) atau application(_:didFinishLaunchingWithOptions:) metode delegasi app Anda. Pengaturan delegasi untuk pemberitahuan pengguna dilakukan sangat mudah dengan kode berikut:

Sekarang dengan set delegasi Anda, ketika pemberitahuan diterima oleh aplikasi, hanya ada dua metode yang perlu Anda khawatirkan. Kedua metode yang melewati sebuah objek UNNotification, yang mewakili pemberitahuan diterima. Benda ini berisi properti date, yang memberitahu Anda persis ketika disampaikan pemberitahuan, dan properti request, yang adalah instance kelas UNNotificationRequest disebutkan sebelumnya. Dari objek permintaan ini, Anda dapat mengakses konten pemberitahuan juga sebagai (jika diperlukan) pemicu bagi pemberitahuan. Objek memicu ini akan menjadi contoh salah satu sub UNNotificationTrigger disebutkan sebelumnya atau, dalam kasus pemberitahuan push, instance kelas UNPushNotificationTrigger.

Metode pertama yang didefinisikan oleh protokol UNUserNotificationCenterDelegate adalah metode userNotificationCenter(_:willPresent:withCompletionHandler:). Ini hanya dipanggil apabila aplikasi Anda berjalan di latar depan dan menerima pemberitahuan. Dari sini, Anda dapat mengakses konten pemberitahuan dan menampilkan antarmuka kustom Anda sendiri dalam aplikasi Anda jika diperlukan. Atau, Anda dapat memberitahukan sistem untuk menyajikan pemberitahuan dengan berbagai pilihan, seperti yang biasanya akan jika aplikasi Anda tidak menjalankan. Opsi yang tersedia adalah:

  • Waspada untuk menunjukkan antarmuka yang dibuat oleh sistem untuk pemberitahuan
  • Suara untuk memutar suara yang terkait dengan notifikasi
  • Lencana untuk mengedit lencana aplikasi Anda di layar awal pengguna

Kode berikut memperlihatkan sebuah contoh implementasi metode userNotificationCenter(_:willPresent:withCompletionHandler:):

Metode lain yang ditetapkan oleh protokol UNUserNotificationCenterDelegate adalah metode userNotificationCenter(_:didReceive:withCompletionHandler:). Metode ini disebut ketika pengguna berinteraksi dengan pemberitahuan untuk aplikasi Anda dengan cara apapun, termasuk menolak atau membuka aplikasi Anda dari itu.

Bukan sebuah objek UNNotification, metode ini memiliki sebuah objek UNNotificationResponse yang dilewatkan ke dalamnya sebagai parameter. Benda ini berisi objek UNNotification yang mewakili pemberitahuan dikirimkan. Ini juga mencakup sebuah properti actionIdentifier untuk menentukan bagaimana pengguna berinteraksi dengan pemberitahuan. Dalam kasus pemberitahuan yang ditutup atau aplikasi Anda dibuka, kerangka UserNotifications menyediakan pengidentifikasi aksi konstan untuk Anda bandingkan.

Kode berikut memperlihatkan sebuah contoh implementasi metode userNotificationCenter(_:didReceive:withCompletionHandler:):

Harap dicatat bahwa untuk kedua mendelegasikan metode, itu sangat penting bahwa Anda menelepon handler penyelesaian segera setelah Anda selesai memproses pemberitahuan. Setelah Anda melakukannya, sistem kemudian tahu Anda selesai dengan pemberitahuan dan dapat melakukan apapun proses yang diperlukan, seperti menempatkan pemberitahuan di pusat pemberitahuan pengguna.

4. Mengelola Pemberitahuan

Kadang-kadang pengguna aplikasi Anda mungkin menerima beberapa pemberitahuan sementara aplikasi Anda tidak berjalan. Mereka mungkin juga membuka aplikasi Anda secara langsung dari layar utama dan tidak melalui pemberitahuan. Dalam kedua kasus ini, tak satu pun dari metode protokol UNUserNotificationCenterDelegate akan dipanggil. Ketika bekerja dengan pemberitahuan lokal, Anda kadang-kadang juga dapat menghapus pemberitahuan dijadwalkan sebelum ditampilkan ke pengguna.

Karena ini, kerangka UserNotifications menyediakan metode berikut pada contoh UNUserNotificationCenter saat ini untuk bekerja dengan tertunda lokal pemberitahuan dan pemberitahuan dikirimkan yang tidak lagi telah diproses:

  • getPendingNotificationRequests(completionHandler:) menyediakan Anda dengan array UNNotificationRequest objek dalam penyelesaian handler. Array akan berisi semua pemberitahuan lokal yang Anda telah dijadwalkan yang tidak lagi telah dipicu.
  • removePendingNotificationRequests(withIdentifiers:) menghapus semua pemberitahuan lokal yang terjadwal dengan pengidentifikasi yang terkandung dalam array String Anda berlalu dalam sebagai parameter.
  • removeAllPendingNotificationRequests menghapus semua pemberitahuan lokal dijadwalkan untuk aplikasi Anda.
  • getDeliveredNotifications(completionHandler:) menyediakan Anda dengan array UNNotification objek dalam penyelesaian handler. Array akan berisi semua pemberitahuan dikirimkan untuk aplikasi Anda yang masih terlihat di pusat pemberitahuan pengguna.
  • removeDeliveredNotifications(withIdentifiers:) menghapus semua disampaikan pemberitahuan dengan pengidentifikasi yang terkandung dalam array String Anda lulus dari pusat pemberitahuan pengguna.
  • removeAllDeliveredNotifications menghapus semua disampaikan pemberitahuan untuk aplikasi Anda.

5. Pemberitahuan Tindakan Kustom

Kerangka UserNotifications juga memudahkan aplikasi Anda untuk mengambil keuntungan dari kategori kustom pemberitahuan dan tindakan yang diperkenalkan di iOS 8.

Pertama, Anda perlu menentukan tindakan kustom dan bahwa aplikasi Anda mendukung menggunakan kelas UNNotificationAction dan UNNotificationCategory masing-masing kategori. Untuk tindakan-tindakan di mana Anda ingin agar pengguna dapat memasukkan teks, Anda dapat menggunakan UNTextInputNotificationAction kelas, yang merupakan sebuah subclass dari UNNotificationAction. Setelah tindakan dan kategori ditentukan, Anda hanya perlu untuk memanggil metode setNotificationCategories(_:) pada contoh UNUserNotificationCenter saat ini. Kode berikut menunjukkan bagaimana Anda dapat dengan mudah mendaftar balasan dan menghapus tindakan untuk pemberitahuan kategori pesan di aplikasi Anda sendiri:

Selanjutnya, ketika pengguna menggunakan salah satu tindakan kustom pemberitahuan Anda, metode userNotificationCenter(_:didReceive:withCompletionHandler:) yang sama yang kita bahas sebelumnya disebut. Dalam kasus ini, tindakan pengenal objek UNNotificationResponse berlalu dalam akan sama seperti yang Anda tetapkan untuk tindakan kustom Anda. Hal ini juga penting untuk dicatat bahwa, jika pengguna berinteraksi dengan input teks pemberitahuan aksi, maka objek respon yang dikirimkan ke metode ini akan jenis UNTextInputNotificationResponse.

Kode berikut memperlihatkan sebuah contoh implementasi dari metode ini, termasuk logika untuk tindakan-tindakan yang buat sebelumnya:

Selain itu, jika Anda ingin mengambil keuntungan dari tindakan kustom untuk pemberitahuan lokal Anda, maka Anda dapat hanya mengatur properti categoryIdentifier pada objek UNMutableNotificationContent ketika membuat pemberitahuan.

Kesimpulan

Kerangka kerja UserNotifications baru menyediakan API berorientasi objek yang berfungsi penuh dan mudah digunakan untuk bekerja dengan pemberitahuan lokal dan jarak jauh pada iOS, watchOS, dan tvOS. Ini sangat mudah untuk menjadwalkan pemberitahuan lokal untuk berbagai skenario serta sangat menyederhanakan seluruh aliran pemrosesan notifikasi masuk dan tindakan khusus.

Seperti biasa, pastikan Anda meninggalkan komentar dan umpan balik di komentar di bawah ini. Dan lihat beberapa artikel dan tutorial kami lainnya tentang fitur baru di iOS 10 dan watchOS 3!

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.