Notification Category (kategorya ng notification) ay isang mekanismo ng iOS para sa pagpapangkat ng mga push notification ayon sa uri at pag-attach ng mga nako-customize na aksyon. Tinutukoy ng kategorya kung aling mga button ang ipinapakita sa 3D Touch o matagal na pagpindot sa notification, pati na rin kung paano pinoproseso ng system ang mga papasok na notification ng ganitong uri. Ayon sa Apple Developer Documentation, ang UNNotificationCategory ay nirerehistro sa UNUserNotificationCenter at iniuugnay sa notification sa pamamagitan ng field na category sa APNS payload.
Mga Pangunahing Punto
Ang Notification Category ay isang feature ng iOS (mula sa bersyon 8.0) na nagpapahintulot sa developer na uriin ang mga push notification at magdagdag ng mga interactive na aksyon. Kapag nakatanggap ang user ng notification at pinindot ito nang malakas (3D Touch) o matagal na pinindot, lilitaw ang mga button na tinukoy ng kategorya.
Ang kategorya ay nirerehistro sa pamamagitan ng object na UNNotificationCategory, na naglalaman ng identifier, isang array ng mga aksyon, at mga opsyonal na parameter ng pagpapakita. Ginagamit ng system ang identifier ng kategorya mula sa APNS payload upang mahanap ang nakarehistrong kategorya at ipakita ang mga kaukulang aksyon.
Hindi tulad ng Android Notification Channel, ang iOS Category ay hindi namamahala ng kahalagahan, tunog, o vibration. Ang tanging gawain nito ay magbigay ng mga kakayahang interactive para sa notification: mga button para sa sagot, kumpirmasyon, kanselasyon, o input ng teksto.
Ang mga kategorya ay hindi sapilitan para sa pagpapakita ng mga push notification sa iOS. Ang notification ay lilitaw sa anumang kaso — may mga button kung naka-rehistro ang kategorya, o wala. Ang mga kategorya ay kailangan lamang para magdagdag ng interaktibidad sa mga notification.
Ang mekanismo ng mga kategorya ay binubuo ng apat na yugto: pagrehistro ng kategorya sa client, pagpapadala ng APNS payload na may kategorya, pagkilala sa kategorya ng system, at pagproseso ng aksyon ng user.
Ang mga aksyon sa kategorya ay maaaring dalawang uri: foreground (nagbubukas ng app) at background (naisasagawa sa background). Para sa mga background na aksyon, ang app ay nakakakuha ng limitadong oras (mga 30 segundo) para sa pagproseso sa UNNotificationActionHandler.
Sinusuportahan ng UNNotificationCategory ang ilang opsyon sa pamamagitan ng parameter na options: customDismissAction — pagtanggap ng event kapag nag-swipe ng notification, allowInCarPlay — pagpapakita ng mga aksyon sa CarPlay, hiddenPreviewsBodyPlaceholder — custom na teksto para sa mga nakatagong preview. Ang tamang pagsasaayos ng mga opsyon ay nagpapabuti sa karanasan ng user sa iba't ibang Apple device.
Ang iOS ay nagbibigay ng dalawang uri ng aksyon para sa mga kategorya ng notification. Bawat uri ay may sariling layunin at paraan ng pakikipag-ugnayan sa user.
| Uri | Klase | Paglalarawan | Halimbawa |
|---|---|---|---|
| Simpleng aksyon | UNNotificationAction | Button na may pamagat at mga opsyon (destructive, foreground, authenticationRequired) | “Tanggalin”, “Tingnan” |
| Input ng teksto | UNTextInputAction | Button na nagbubukas ng field ng input ng teksto na may hint | “Sumagot”, “Magkomento” |
UNTextInputAction — isang natatanging kakayahan ng iOS. Sa pagpindot ng button na “Sumagot”, ang system ay nagpapakita ng text field kung saan ang user ay naglalagay ng sagot. Ang inilagay na teksto ay ipinapasa sa delegat kasama ang identifier ng aksyon. Ito ay nagpapahintulot ng mabilis na mga sagot nang hindi binubuksan ang app.
Mga opsyon ng aksyon: options.authenticationRequired — nangangailangan ng pag-unlock ng device, options.destructive — nagha-highlight ng button sa pula (para sa mga mapanganib na aksyon), options.foreground — nagbubukas ng app pagkatapos pindutin.
Ang mga kategorya ay nirerehistro sa pagsisimula ng app, karaniwan sa pamamaraang didFinishLaunchingWithOptions. Ang pagrehistro ay nagaganap sa pamamagitan ng UNUserNotificationCenter, pagkatapos humingi ng pahintulot para sa mga notification. Ang mga kategorya ay maaaring i-update sa bawat pagsisimula — ang mga lumang bersyon ay pinapalitan ng mga bago.
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func registerNotificationCategories() {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Sumagot",
options: [.foreground],
textInputButtonTitle: "Ipadala",
textInputPlaceholder: "Ilagay ang mensahe..."
)
let deleteAction = UNNotificationAction(
identifier: "delete",
title: "Tanggalin",
options: [.destructive]
)
let messageCategory = UNNotificationCategory(
identifier: "message",
actions: [replyAction, deleteAction],
intentIdentifiers: [],
options: [.customDismissAction]
)
UNUserNotificationCenter.current()
.setNotificationCategories([messageCategory])
}
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
UNUserNotificationCenter.current().delegate = self
registerNotificationCategories()
return true
}
}
Pagkatapos ng pagrehistro ng kategorya, bawat notification na may category = “message” sa APNS payload ay magpapakita ng mga button na “Sumagot” at “Tanggalin”. Ang pagproseso ng mga pagpindot ay nagaganap sa userNotificationCenter:didReceive response, kung saan tinutukoy ng actionIdentifier kung aling button ang pinindot.
Kapag pinindot ng user ang button ng kategorya, tinatawag ng iOS ang delegat na UNUserNotificationCenterDelegate na may UNNotificationResponse object. Ang response.actionIdentifier ay naglalaman ng identifier ng pinindot na button, at ang response.notification.request.content.userInfo ay naglalaman ng custom na data mula sa APNS payload. Para sa UNTextInputAction, available din ang response.userText na may tekstong inilagay ng user.
Ang mga developer na pamilyar sa Android Notification Channels ay madalas na napagkakamalan ang mga ito sa iOS Notification Categories. Sa kabila ng magkatulad na pangalan, ang mga mekanismong ito ay lumulutas ng magkaibang mga gawain at gumagana sa magkaibang paraan.
Sa parehong platform, ang parehong mekanismo ay maaaring pagsamahin: sa Android, ang notification ay maaaring mapabilang sa isang channel na may mga aksyon mula sa NotificationCompat, at sa iOS, ang kategorya ay nagpupuno sa mga channel na sa iOS ay tinatawag na thread-id at nagsisilbi para sa pagpapangkat ng mga notification sa notification center.
Upang maipakita ang notification na may mga button ng kategorya, dapat isama ng server ang key na category sa APNS payload. Kung wala ang key na ito, hindi malalaman ng system kung aling kategorya ang ilalapat sa notification.
{
"aps": {
"alert": {
"title": "Bagong mensahe",
"body": "Anna: Kamusta! Kumusta ka?"
},
"category": "message",
"thread-id": "chat_123",
"badge": 5,
"sound": "default"
}
}
Ang key na category ay dapat eksaktong tumugma sa identifier na nirehistro sa pamamagitan ng setNotificationCategories sa client. Mahalaga ang malaki at maliit na titik — ang “message” at “Message” ay itinuturing na magkaibang kategorya. Kung hindi matagpuan ang kategorya, ang notification ay ipapakita nang walang mga button, walang error sa mga log.
Kung ang server ay nagpadala ng notification na may category na hindi naka-rehistro sa client, binabalewala ng iOS ang kategorya at ipinapakita ang notification nang walang mga button. Ang error ay hindi nila-log, at ang app ay hindi nalalaman ang hindi pagkakatugma. Inirerekomenda na i-synchronize ang listahan ng mga kategorya sa pagitan ng server at client sa pamamagitan ng configuration file at suriin ang mga ito sa bawat pag-update ng app.
Sa pagdidisenyo ng mga kategorya ng notification ng iOS, sundin ang prinsipyong isang kategorya — isang senaryo. Bawat kategorya ay dapat tumugma sa isang partikular na uri ng interaksyon: sagot sa mensahe, kumpirmasyon ng aksyon, pagtanggi ng kahilingan. Huwag paghaluin ang iba't ibang senaryo sa isang kategorya — ito ay nakakalito sa user at nagpapahirap sa pagproseso sa delegat.
Gamitin ang UNTextInputAction para sa mga senaryo kung saan kailangan ng user na maglagay ng teksto nang hindi binubuksan ang app: mga sagot sa mga messenger, komento, mabilisang tala. Ang mga aksyong tekstuwal ay nagpapataas ng pakikipag-ugnayan — ang user ay gumagawa ng makabuluhang aksyon sa 2 tap sa halip na 5+ sa bukas na app.
Para sa mga mapanganib na aksyon (tanggalin, i-block) gamitin ang opsyon na destructive. Ia-highlight ng iOS ang mga button na ito sa pula, binabalaan ang user tungkol sa hindi na maibabalik na aksyon. Para sa mga aksyon na nangangailangan ng pag-unlock ng device (pagtingin ng personal na data), itakda ang authenticationRequired — hihingi ang system ng Face ID o password bago isagawa.
Subukan ang mga kategorya sa iba't ibang device: sa iPhone na may 3D Touch, sa iPhone na walang 3D Touch (matagal na pindot), sa iPad, at sa Mac. Ang pag-uugali ng mga kategorya ay maaaring bahagyang mag-iba sa iba't ibang platform ng Apple. Espesyal na atensyon — CarPlay: ang mga button ng kategorya ay ipinapakita sa screen ng kotse, ngunit ang input ng teksto ay hindi available, kaya ang UNTextInputAction ay awtomatikong nakatago sa CarPlay. Sa watchOS, ang mga kategorya ay hindi sinusuportahan — lahat ng notification ay ipinapakita nang walang mga action button.
Mga Madalas Itanong
Walang limitasyon — hindi nagtatakda ang iOS ng limitasyon sa bilang ng UNNotificationCategory. Gayunpaman, sa pagsasanay ay inirerekomenda na hindi hihigit sa 10–15 kategorya upang hindi maging kumplikado ang pagproseso sa delegat. Bawat kategorya ay maaaring maglaman ng hanggang 4 na aksyon (button). Higit sa 4 na aksyon ay binabalewala ng system.
Ipatupad ang delegat na UNUserNotificationCenterDelegate at ang pamamaraang didReceive response. Suriin ang response.actionIdentifier: UNNotificationDismissActionIdentifier — swipe para tanggalin, UNNotificationDefaultActionIdentifier — tap sa katawan, o ang iyong custom na identifier ng button. Para sa mga text button, ang teksto ay available sa pamamagitan ng response.userText.
Category — tinutukoy ang mga interactive na aksyon (button) para sa notification. Thread-id — nagpapangkat ng mga notification sa Notification Center ayon sa paksa. Ang parehong key ay tinukoy sa APNS payload. Ang category at thread-id ay hindi nauugnay: ang isang notification ay maaaring magkaroon ng kategorya nang walang thread-id at kabaliktaran.
Oo, ang UNNotificationCategory ay sinusuportahan sa macOS 10.14+ (Mojave) sa mga app na gumagamit ng UserNotifications framework. Ang pag-uugali ng mga kategorya sa macOS ay katulad ng iOS: sa pagpindot ng notification, ang mga button ay ipinapakita, ang pagproseso ay nagaganap sa pamamagitan ng UNUserNotificationCenterDelegate.
Inirerekomenda na irehistro ang mga kategorya sa bawat pagsisimula ng app sa pamamagitan ng setNotificationCategories. Pinapalitan ng system ang lumang set ng mga kategorya ng bago sa bawat tawag. Kung hindi mo i-update, ang mga kategorya ay mananatili sa pagitan ng mga pagsisimula, ngunit kapag nagbago ang code, ang mga lumang kategorya ay maaaring hindi tumugma sa mga bago.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din