Momentan lucrez la o aplicație Cordova, dar presupun că-i o treabă validă și pentru o aplicație nativă.
De ce am nevoie
O aplicație în care te poți autentfica cu mai multe conturi (e.g. Slack), iar fiecare cont să aibă setări individuale pentru notificările push.
Cum funcționează notificările push
Cel puțin pe iOS, tot ce face telefonul este să-ți dea un token atunci când accepți să primești notificările și… cam atât.
Articolele și tutorialele nu detaliază mai mult decât „ah, ai nevoie de un server, dar nu discutăm despre asta acum”. Prin urmare știi că ai nevoie de un server, dar restul trebuie să-ți dai seama singur.
Cum am făcut
În momentul în care un utilizator se autentifică într-un cont pe telefon, pe lângă user/pass trimit și token-ul generat de setările push și starea curentă și țin setarea (și) pe server. Alternativ, dacă nu este nevoie de autentificare cu user/pass, poți face un request AJAX spre server în care trimiți doar token-ul.
Atunci când e de trimis o notificare pentru un anumit utilizator de pe un anumit device, iau user și token din db, încropesc payload necesar și îl trimit.
Tabela din DB este banală, cu trei coloane: id | token | user_id
și se face join cu tabela de utilizatori pentru a ști cui să trimiți notificare. În funcție de ce ai pe server, poți trimite notificări ori în timp real, când se întâmplă ceva, ori printr-un cron, la fiecare x minute/ore.
Nu pot să dau mai multe detalii aici pentru că nu eu sunt cel ce s-a ocupat de server.
Acum… că o fi bine sau nu, nu știu. E deja a doua aplicație la care procedăm așa, deci aș zice că-i ok