Artikel ini, seperti yang sebelumnya , dikhususkan untuk perubahan Notifikasi yang muncul di iOS 12.
Pada artikel terakhir saya berbicara tentang inovasi umum, kali ini saya akan membahas pengelompokan notifikasi secara lebih rinci.
Pengelompokan di iOS 12
Agar pemberitahuan yang berasal dari aplikasi Anda dikelompokkan dalam iOS 12, Anda tidak perlu melakukan apa pun, pengelompokan akan dilakukan secara otomatis. Pemberitahuan di layar akan mulai menumpuk ketika jumlahnya mencapai 5.
Pengguna memiliki kesempatan untuk mempengaruhi pengelompokan melalui pengaturan sistem.
- Otomatis (standar) - aplikasi mengontrol pengaturan pengelompokan.
- Oleh Aplikasi - pengaturan aplikasi diabaikan, semua pemberitahuan dari aplikasi ditambahkan ke satu tumpukan.
- Off - pengaturan aplikasi diabaikan, pengelompokan notifikasi dinonaktifkan.
Pengaturan pengelompokan
Kami dapat memengaruhi pengelompokan pesan hanya jika Bendera Otomatis digunakan dalam pengaturan. Untuk melakukan ini, pemberitahuan harus menentukan parameter thread-id . Kami juga meneruskan thread-id ke pemberitahuan subtitle untuk kejelasan:
let content = UNMutableNotificationContent() content.threadIdentifier = threadId content.subtitle = "Thread ID: \(threadId)"
Kami mengirim beberapa pesan dan melihat hasil pengelompokan:
Anda juga dapat melewati utas-id untuk mendorong pemberitahuan:
{ "aps" : { "alert" : { "title" : "Cat Title" "body" : "Cat Body" } "thread-id" : "all-cats" } }
Saat Anda menentukan pengenal untuk pemberitahuan, jangan lupa untuk menentukannya di UNNotificationCategory , jika tidak, mereka tidak akan diproses dalam Ekstensi untuk pemberitahuan:
UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], options: [])
Untuk kategori, Anda dapat menentukan format pesan yang akan ditampilkan oleh pengguna di perangkat, ini adalah salah satu inovasi iOS 12. Anda hanya dapat melakukan ini ketika menginisialisasi kategori:
UNNotificationCategory(identifier: "category-simple", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: "%u %@", options: [])
Parameter % u bertanggung jawab atas jumlah pesan dalam grup, itu dapat dimodifikasi menggunakan argumen summaryArgumentCount . Misalnya, Anda menerbitkan pilihan kucing baru, di mana 10 gambar baru. Tidak masuk akal untuk mengirim 10 senjata ke pengguna, Anda dapat mengirim satu pesan dengan penghitung yang setara dengan 10. Parameter % @ menampilkan nilai ringkasan variabelArgument pada layar:
let content = UNMutableNotificationContent() content.summaryArgumentCount = 10 content.summaryArgument = " "
Di setiap grup kami memiliki 3 pesan, tetapi karena fakta bahwa parameter summaryArgumentCount ditentukan , jumlah pesan ditampilkan sama dengan 20. Dan summaryArgument memungkinkan kami untuk menambahkan nama kategori yang menjadi tempat pemberitahuan push. Tidak buruk, tetapi sekarang kami memiliki masalah lokalisasi.
Lokalisasi
Untuk mengimplementasikan tugas pelokalan, tambahkan File Stringdict ke proyek.
Ubah Kunci String Lokal ke NOTIFICATION_SUMMARY , jika tidak nilai-nilai dari kamus tidak akan diproses, terlepas dari kenyataan bahwa ketika string lokal diterima, kunci dengan nama kamus dilewatkan sebagai parameter. Nilai yang tersisa ditunjukkan pada gambar:
Di File Inspector untuk kamus, pilih Localize .
Kami menentukan file untuk pelokalan.
Kami masuk ke pengaturan proyek dan menambahkan bahasa untuk melokalisasi Rusia (ru) .
Kelebihan file dapat dihapus dari proyek.
Dalam kode, kita mendapatkan string yang dilokalkan dan meneruskannya sebagai parameter categorySummaryFormat :
let summary = NSString.localizedUserNotificationString(forKey: "NOTIFICATION_SUMMARY", arguments: nil) let category = UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: summary, options: [])
Hasilnya, kami mendapatkan pelokalan aplikasi yang sangat baik.
Proyek yang dibuat untuk artikel terakhir telah diperbarui, kode dapat ditemukan di github . Dua laporan di WWDC ditujukan untuk penerapan pemberitahuan: Apa yang Baru dalam Pemberitahuan Pengguna dan Menggunakan Pemberitahuan yang Dikelompokkan . Kami akan dapat membahas inovasi di MBLT DEV 2018 di Moskow pada 28 September.
Semoga minggu Anda menyenangkan! ^ _ ^