Notificări push Android 6.0. Notificări push - ce sunt acestea? Cum să activați și să dezactivați notificările push? Conectați-vă la o rețea stabilă

Apple este responsabil pentru funcționarea corectă a notificărilor Push în iOS. Orice aplicație terță parte, dacă dorește să trimită notificări utilizatorului, trebuie să folosească serverele Apple pentru asta. Schema arată astfel: dezvoltatorul o va ridica pe a lui propriul server, care accesează Push Notification Service (APNS) de la Apple, care la rândul său trimite notificări utilizatorilor de pe dispozitivele lor.

Prin urmare, dacă unii aplicație specifică nu vă trimite notificări, atunci problema se află în mâinile strâmbe ale dezvoltatorului, care nu poate configura corect interacțiunea serverului său cu APNS. Dacă nu mai primiți absolut toate notificările, atunci încercați următoarele instrucțiuni.

Ieși din cont ID-ul Apple

Pentru identificare Dispozitivele Apple folosește ID-ul tău Apple. Acesta este modul în care compania înțelege unde să trimită notificări. Primul lucru de făcut dacă ai probleme cu primind Push-notificări – deconectați-vă și conectați-vă din nou la ID-ul dvs. Apple. Puteți face acest lucru în „Setări” > „ magazinul iTunesși App Store.”

Reconectați dispozitivul la iCloud

Un pas similar ar trebui repetat cu serviciu cloud iCloud, care este responsabil pentru sincronizarea datelor între dispozitive și cu Servere Apple. Puteți face acest lucru în Setări > iCloud.

Reporniți dispozitivul

iOS nu are multe instrumente pentru rezolvarea problemelor, repornirea fiind cea principală. Permiteți-ne să vă reamintim că o repornire este diferită de o oprire/pornire obișnuită. Puteți reporni dispozitivul apăsând lung butonul de pornire și tasta Acasă pe dispozitivele mai vechi și apăsând lung butonul de pornire și de reducere a volumului pe iPhone 7 și iPhone 7 Plus.

Verificați modul Nu deranjați

Dacă sistemul este setat pe modul Nu deranja, nu veți auzi notificări în timp specificat. Asigurați-vă că nu îl porniți permanent. Acest lucru este de înțeles dacă există o pictogramă semilună în bara de stare a dispozitivului.

Verificați setările aplicației dvs

iOS are un sistem de notificare foarte flexibil care vă permite să personalizați fiecare aplicație așa cum doriți. Poate trimite notificări Push, poate afișa notificări doar pe pictograma aplicației, cu bannere în partea de sus a ecranului, poate afișa sau nu notificări pe ecran închis. Pe scurt, există multe opțiuni, toate putând fi vizualizate în „Setări” > „Notificări”. Dacă, la prima lansare a aplicației, ați blocat-o din greșeală de la trimiterea notificărilor, puteți oricând să modificați această setare în acest meniu.

Verificați butonul de sunet

Absurd, dar, după cum arată practica, extrem de sfaturi utile. Mic comutator pe lateral panouri iPhone nu afectează în niciun fel funcționarea notificărilor Push, dar se dezactivează sunete de sistem notificări. Deci, dacă îl comutați din greșeală, este posibil să nu auziți notificări importante.

Un factor important de siguranță este viteza de răspuns la evenimente. Un mesaj despre un eveniment sau incident care sosește cu 10 minute întârziere sau nu ajunge deloc, în majoritatea cazurilor, face toate investițiile în supraveghere video, securitate, sisteme de control acces, casă inteligentă. Pentru cei fără personal de securitate propriu, instalăm întotdeauna sisteme controlate prin intermediul unui smartphone sau tabletă, care vă permit să vizualizați video, să controlați automatizarea, să deschideți și să închideți încuietori și porți, robinete și alte dispozitive. Și auziți adesea că aplicația funcționează prost, face ceva, dar nu livrează notificări. Dar nu este întotdeauna vina dezvoltatorului. Adesea motivul este în smartphone, sau mai exact în sistemul său de operare. Să reparăm notificările Push.

Serviciul de livrare este responsabil pentru livrarea mesajelor pe telefonul dvs. Notificări de la Google și sistemul de operare, iar apoi transmit mesajul către aplicația pentru care a fost destinat. Pe dispozitive Măr De obicei nu sunt probleme, dar pe dispozitivele cu Bazat pe Android livrarea notificărilor se face în așa fel încât dezvoltatorii de aplicații le costă multă muncă pentru ca mesajele să ajungă și să ajungă la timp, iar acestea nu reușesc întotdeauna. De fapt, Android în sine nu împiedică livrarea mesajelor, datorită faptului că fiecare producător are o mulțime de suplimente și „îmbunătățiri” la sistemul de operare de bază.
Să ne dăm seama.

Ce să faci dacă mesajele nu sunt livrate deloc?

Iată câteva posibile motive:

  • Utilizatorul nu a înregistrat niciun cont Google activ pe telefon;
  • Versiune învechită Servicii Google Play . Este necesară actualizarea acestuia, aceasta poate necesita actualizarea întregului sistem de smartphone;
  • Notificările pentru aplicație sunt dezactivate (bifează pe pagina aplicației în setările telefonului);
  • Operarea aplicației este limitată în fundal(setarea se află în meniul „Utilizarea datelor”);

Pentru ca aplicația dvs. de sistem de securitate, sau de exemplu de la WhatsApp, Telegram, Skype, Vider, să primească un mesaj, telefonul trebuie să contacteze serverul și să verifice dacă există un mesaj nou pentru el, să-l ridice dacă există, și transferați-l în aplicația dorită, astfel încât să o afișeze deja. Aceasta înseamnă că telefonul trebuie să fie întotdeauna conectat la Internet, chiar dacă este în buzunar. Toate acestea consumă bateria telefonului, iar mulți producători, care încearcă să prelungească durata de funcționare a smartphone-ului cu o singură încărcare, interzic notificările Push sau fac verificarea foarte rară.

Deci, motivele întârzierilor Mesaje push ar trebui să căutați în mod special „sisteme de economisire a energiei” (de exemplu, Stamina on Dispozitivele Sony), „optimizarea aplicației”, etc. și aici fiecare producător de smartphone-uri bazate pe Android își inventează propria roată și adesea o reface de la actualizare la actualizare.

În acest articol vom încerca să colectăm descrieri despre cum să dezactivați aceste optimizări ale consumului de energie pentru mesaje Push pentru diferite telefoane.

Merită să spui ce anume dezactivarea Push notificările au un impact foarte slab asupra consumului de energie în comparație cu consumul de LTE sau o aplicație consumatoare de energie. Activarea sau dezactivarea optimizărilor mesajelor Push modifică durata de viață a bateriei unui smartphone la o singură încărcare cu maximum câteva procente.

Samsung Galaxy S6

O aplicație care ne dăunează Samsung Galaxy S6, numit . Acest cerere separată, care poate fi găsit și în setările sistemului.

În aplicația Smart Manager, trebuie să faceți clic pe OPȚIUNI, în dreapta colțul de sus. „Configurarea notificărilor”. Și porniți comutatorul „Degradarea performanței”. Denumirea este foarte ciudată și confuză, dat fiind faptul că degradează performanța în poziție off. Pentru a primi notificări Push, poziția comutatorului trebuie să fie ca în imagine. Comutatorul „Economisire energie” nu produce prea mult efect, dar îl puteți porni și pe acesta.

Pe dispozitivele ASUS


  • Pe dispozitiv ASUS ZenFone Este posibil ca 2 aplicații să nu pornească după repornirea dispozitivului sau descărcarea aplicației din memorie cu acces aleator dispozitive. Pentru a rezolva această problemă, permiteți pornire automată pentru aplicație în setările Managerului de pornire.

Pe dispozitivele HUAWEI

Pot exista următoarele probleme și modalități de a le rezolva:

  • Dacă modul de economisire a energiei este activat, este posibil să nu apară ferestre pop-up. Pentru a rezolva această problemă, adăugați aplicația la lista de aplicații protejate din Battery Manager.
  • Aplicația poate fi descărcată din memoria RAM a dispozitivului folosind sistemul de operare. Pentru a rezolva această problemă, fixați aplicația în memoria RAM a dispozitivului dvs. utilizând Application Manager și adăugați-o la lista de aplicații protejate din Battery Manager.

Pe dispozitivele Meizu

Pot exista următoarele probleme și modalități de a le rezolva:

Pe dispozitivele Lenovo

Pot exista următoarele probleme și modalități de a le rezolva:

Pe dispozitivele Samsung

Pot exista următoarele probleme și modalități de a le rezolva:

  • Este posibil ca aplicația să nu pornească după repornirea dispozitivului. Pentru a rezolva această problemă, activați repornirea automată. De exemplu, folosiți Aplicație inteligentă Administrator. Accesați Smart Manager > RAM > Aplicație de încărcare automată. și porniți întrerupătorul.

Pe dispozitivele XIAOMI MIUI

Pot exista următoarele probleme și modalități de a le rezolva:

Pe dispozitivele ZTE

Pot exista următoarele probleme și modalități de a le rezolva:

Cum să fixați o aplicație în memoria RAM a dispozitivului

Deschideți Managerul de activități. De exemplu, apăsați și mențineți apăsat butonul din mijloc până când o listă cu toate rulează aplicații.
Găsiți aplicația.
Faceți clic pe pictograma Blocare de lângă numele aplicației.
Pictograma de blocare indică faptul că aplicația este fixată pe RAM.

ÎN anul trecut Telefoanele inteligente chinezești au devenit foarte populare în Rusia Compania Xiaomi, trăsătură caracteristică care este interfața proprietară MIUI. Are setări de sistem deosebit de profunde, care nu sunt disponibile pentru utilizatori versiuni standard android.

Cu toate acestea, în ciuda avantaje semnificative, mulți se plâng că în xiaomi redmi notificările de la nota 3 nu sunt primite - ce cauzează acest lucru și cum se remediază problema este descris mai jos.

De ce nu primesc notificări în MIUI?

Deși MIUI pare simplu, interfață ușor de utilizat, dar este fundamental diferit de Android obișnuit Dezvoltatorii MIUI au îmbunătățit autonomia smartphone-urilor din cauza unor restricții pentru aplicații personalizate(whatsapp, viber, vk etc.). De exemplu, interdicții pe procese de fundal, conexiunile la rețea și geolocalizarea reduc semnificativ sarcina CPU, reducând astfel consumul bateriei. Timp durata de viata a bateriei este semnificativ extins.

Cu toate acestea, acest lucru a creat un dezavantaj enervant. Utilizatorii au observat că în smartphone-uri xiaomi Uneori, notificările de la programele tale preferate nu ajung. Mai mult, nu există notificări, chiar dacă aplicația a fost lansată manual. Și dacă ecranul se întunecă, poți uita complet că rețelele sociale și alte servicii ar trebui să trimită notificări importante.

Prin urmare, mulți sunt literalmente chinuiți de întrebarea, de ce este totul atât de complicat și cum să activați notificările în MIUI? De dragul lor, utilizatorii sunt ușor dispuși să sacrifice autonomia pentru a nu pierde alertele necesare. Pentru a rezolva această problemă, este necesar să se efectueze o reconfigurare cuprinzătoare a MIUI, deoarece... Din păcate, nu există un buton magic „Activați notificările”.

Modul de fundal (economisire energie)

Unul dintre puncte personalizare profundă, pe care încă trebuie să încercăm să-l găsim. Să luăm exemplul smartphone-ului angajatului nostru, al cărui redmi note 3 pro nu mai primește notificări. Numele meniului poate diferi în funcție de construcția MIUI, așa că ai încredere în intuiția ta și caută ceva similar în setări: Avansat, Performanță și baterie, Consum de energie pe aplicații. Vor exista mai multe moduri de economisire a energiei, dintre care „Standard” este activ în mod implicit. El este cel care blochează accesul la conexiuni de reteași geolocalizare. Desigur, într-un astfel de mediu offline la distanță, aplicațiile de pe xiaomi redmi nu pot afișa deloc notificări. Este curios că în acest mod, MIUI determină independent ce procese de fundal să blocheze, așa că este greu de prezis când vor sosi anumite notificări.

moduri de economisire a energiei xiaomi redmi 3s

Dacă ați găsit aceste setări, atunci vă confruntați și cu problema lipsei alertelor în modul de economisire a energiei „Standard”. Pe în această etapă Există 2 opțiuni.

  1. Pur și simplu puteți dezactiva economisirea energiei. Atunci MIUI ar trebui să înceapă să funcționeze ca Android obișnuit, când nucleul sistemului reglementează în mod independent toate procesele de fundal, drepturile de acces, prioritățile etc. Teoretic, toate aplicațiile ar trebui să aibă acces complet La activitate de fundal, rețele etc.
  2. Utilizatorii experimentați pot face diferit. Instalare nivel maxim economisirea energiei („Îmbunătățit”), apoi deblocați numai selectiv programe importante. Această configurare durează literalmente trei minute, dar poți fi sigur că resursele smartphone-ului vor fi alocate doar pentru necesare utilizatorului proceselor. Apropo, atunci puteți limita și activitatea de fundal a sistemului aplicații Xiaomi, care este puțin probabil să fie la mare căutare de către utilizatorii casnici.

Configurarea tipurilor de notificare

Configurarea activității în fundal a aplicației a fost doar începutul recuperării operatie normala notificări. Puțini oameni știu, dar interfața MIUI vă permite și să controlați tipurile de notificări din aplicații.

Să explicăm cu un exemplu Facebook Messenger. Programul poate afișa notificări despre mesajele din perdea sau poate schimba indicatorul cu un număr pe pictograma acestuia mesaje necitite. Cu toate acestea, o fereastră rotundă plutitoare pe desktop este mult mai convenabilă, deoarece... Uneori nu puteți deschide mesajul corespunzător de pe perdea. Dacă telefonul tău are un tip de notificare, dar îi lipsește altul, atunci problema constă în limitarea acestor tipuri.

Pentru a remedia acest lucru, trebuie să deschideți „Notificări și apeluri” în setări și acolo să găsiți „Notificări de aplicație”. În continuare va apărea o listă de aplicații care au permisiunea de notificări. Le puteți dezactiva pe cele inutile și pentru programele necesare- configurați tipurile și prioritățile de notificare. Aici sunt activate „Notificările pop-up” ale aplicațiilor, precum și tranziția normală de la cortină.

Aplicații de rulare automată

Acest lucru este destul de important pentru că... Uneori, activarea autorunității afectează de fapt funcționarea corectă a unor aplicații. Puteți configura lansarea automată a programelor în timpul pornirii dispozitivului prin meniul „Permisiuni”, „Pornire automată” în secțiunea „Securitate”.

Hai să intrăm și apoi să instalăm parametrii necesari. Este recomandabil să setați autorun pentru toată lumea aplicatii importante(rețele sociale, mesagerie instant etc.).

Fixarea aplicațiilor în RAM

Aceasta este o caracteristică particulară a interfeței MIUI. Utilizatorii începători nu îl vor recunoaște imediat. Ideea este că puteți selecta aplicații care vor fi întotdeauna în RAM, chiar dacă „închideți totul” prin meniul de aplicații care rulează. Aceasta este foarte caracteristică utilă pentru a consolida mesagerii, rețelele sociale (VKontakte) și dialerele în memorie. Datorită acestui fapt, aplicațiile fixate se deschid aproape instantaneu, interfața MIUI le va forța să funcționeze, protejându-le de închiderea neașteptată. După repornirea smartphone-ului, toți „pinii” încă funcționează.

Pentru a face acest lucru în meniu rulează programe trebuie să „glisați” comanda rapidă în jos aplicatia dorita(adică acolo unde notificările eșuează) și faceți clic pe blocare. Pe scurtătură ar trebui să apară un lacăt, ceea ce înseamnă că aplicația este blocată în RAM. Pentru a anula fixarea, glisați pur și simplu comanda rapidă în sus.

Optimizarea RAM și WiFi

În plus, în secțiunea „Economisire energie” din meniul de setări a bateriei, poate exista o opțiune de curățare periodică a memoriei RAM. Această funcție elimină din RAM Redmi Note aplicații inutile, care accelerează funcționarea dispozitivului și reduce consumul de baterie, totuși, este indicat să îl dezactivați dacă situația cu notificări este instabilă.

ÎN Setări WiFi De asemenea, este recomandabil să dezactivați optimizarea, deoarece atunci când ecranul este blocat sau oprit, interfața MIUI se poate deconecta simultan de la rețele fără fir, din nou pentru a economisi bateria, dar în detrimentul confortului utilizatorului.

Sperăm că aceste sfaturi vă vor ajuta să depășiți problema notificărilor. Scrieți în comentarii ce anume v-a ajutat să faceți față acestei probleme.

26.05.2016

Fiecare companie de afaceri și aplicații are propriile liste de clienți și proiecte preferate. Ne iubim clienții, în special pe cei care, pe lângă produsul finit la final, doresc să înțeleagă în mod independent tehnologiile și să se ridice la nivelul unui specialist. Sunt folosite orice metodă, dar „tortura la întrebări” este deosebit de populară (orice tester se odihnește).

Portretul tehnic al aplicației în curs de dezvoltare

Cream o aplicație mobilă pentru un magazin de îmbrăcăminte, a cărei arhitectură a fost construită pe o Activitate de bază (fragmentele sunt folosite pentru afișarea informațiilor). Biblioteca Retrofit a fost folosită pentru a descărca date de pe server, iar biblioteca dependentă încorporată a fost folosită pentru a le stoca. baza de date SQLite. Au fost selectați încărcătoare pentru a executa cereri către server și pentru a prelua din baza de date.

Pentru a face aplicația interactivă și a vă permite să faceți schimb de mesaje, am activat notificările push. ÎN în acest caz, VK și Facebook SDK sunt folosite pentru a implementa autorizarea/înregistrarea prin social mediași arată așa: atunci când un utilizator trimite un mesaj, el trimite o cerere cu acest mesaj către serverul nostru. Acesta generează o solicitare cu un mesaj și date despre utilizatorul căruia i-a fost adresat mesajul și trimite toate informațiile către server Google. Acesta generează o notificare push din această solicitare și o trimite pe dispozitivul utilizatorului. Aplicația noastră primește acest push, îl analizează (procesează) și îl afișează în chat - comunicarea se realizează.

Există o problemă: când începe să ruleze aplicația în fundal sau de ce notificările push ajung doar după lansare?

Un client a venit la noi cu această întrebare, deoarece prin experiență s-a confruntat cu următoarea dilemă: atunci când este lansată de pe un al doilea dispozitiv, aplicația funcționează bine, dar cum funcționează atunci „încărcarea automată”?

Hai să vorbim. Aplicația începe să funcționeze în fundal imediat după instalare, iar abonamentul la notificări push se efectuează după înregistrarea în aplicație.

Dacă utilizatorul nu se înregistrează în el, atunci notificările push nu vor funcționa pentru el.

Există și alte explicații de luat în considerare:

  1. Notificările push funcționează prin serviciul GCM ( Google Cloud Mesaje), deci dacă nu aveți Google pe dispozitiv Servicii Play, munca lor este instabilă sau producătorul a adus îmbunătățiri în munca lor, apoi notificările push nu vor funcționa complet sau vor exista întreruperi în activitatea lor. Dacă serviciile Google Play nu sunt disponibile pe telefonul dvs., nici măcar nu vă veți putea înregistra pentru notificări push. Desigur, puteți face acest lucru și „forțat”: dacă, după înregistrare, abonamentul la notificări push pe server nu reușește, atunci trebuie să continuați să încercați de fiecare dată când intrați în aplicație până la un rezultat de succes. Motivul pentru această situație poate fi probleme cu funcționarea serviciilor Google Play - în acest caz, o încercare de abonare se poate termina cu nimic.
  2. Motivul funcționării incorecte constă în imperfect mediu de lucru. Recomandăm clienților noștri pentru testare, și apelăm la mediul ideal, utilizarea telefoanelor Google Nexus(rulează Android „pur” fără nicio modificare, iar sistemul de operare și serviciile funcționează în mod ideal), muncă stabilă servere și conexiuni la internet. In astfel de conditii, cererile vor fi emise corect, fara erori si in cel mai scurt timp posibil. În acest caz, aplicația va încărca rapid date noi, le va afișa și nu vor fi probleme afișare incorectă informație. În alte telefoane (cu modificate sistem de operaremărci chinezești, Samsung, HTC etc.) vă puteți aștepta nu numai muncă instabilă server, dar și oportunități limitate aplicația în curs de dezvoltare (datorită eliminarea sistemului multe metode-funcții) - da, notificările push pot să nu fie furnizate deloc.
  3. Nu uitați principalul lucru - notificările push vin doar dacă există o conexiune stabilă la internet. Dacă nu este cazul, atunci mesajul va veni imediat ce conexiunea este restabilită.

rezumat

  • Un mediu ideal (Internet fără cusur, platformă „curată”) este ideal, așa că avertizați clienții despre toate posibile eroriși limitări ale funcționalității aplicației.
  • Nu-ți fie teamă de întrebările clienților - aceștia vor căuta cu atenție defecte în munca ta și le vor găsi! Vă mulțumesc și remediați erorile prompt.
  • În primul rând, creați o aplicație pentru utilizatori, concentrați-vă asupra lor capabilități tehniceși nu creați lucruri inutile.
28 decembrie 2015 la 12:25

Notificări push în Android. Greble, cârje și biciclete

  • Dezvoltare de aplicații mobile,
  • Dezvoltare Android

Am fost solicitat să scriu acest articol de o sarcină care mi-a fost atribuită într-unul dintre proiectele mele de lucru: să implementez notificări Push într-o aplicație. Părea că totul era simplu: studiezi documentația, exemple și mergi mai departe. În plus, aveam deja experiență de lucru cu notificări. Dar nu era acolo…

Serviciul, în cadrul căruia este implementată aplicația Android, are cerințe destul de stricte pentru funcționarea notificărilor Push. Este necesar să anunțați utilizatorul cu privire la o anumită acțiune în 30-60 de secunde. Dacă notificarea are succes, o solicitare este trimisă de pe dispozitivul utilizatorului către server cu starea corespunzătoare. Din documentație știm că serviciul GCM (Google Cloud Messaging) nu garantează livrarea notificărilor PUSH către dispozitive, prin urmare, ca opțiune backdoor, dacă aceste intervale de timp sunt încălcate, serviciul nostru anunță utilizatorul cu prin SMS mesaje. Deoarece Costul SMS mesajele sunt semnificativ mai mari decât notificările PUSH, este necesar să reduceți cât mai mult fluxul Mesaje SMS către dispozitivele client.

După ce am studiat documentația și am instalat notificări push, am trimis prima versiune a aplicației pentru a testa mai mulți clienți și am început să așteptăm. Rezultatele au fost aproximativ după cum urmează:

  • cu activ Conexiune Wifi totul funcționează perfect: notificările sunt livrate, clienții sunt mulțumiți.
  • cu activ internet mobil Distracția a început.
Unii clienți au scris că au experimentat întârzieri în livrarea notificărilor push sau au primit atât PUSH, cât și SMS-uri în același timp, ceea ce este destul de nepractic. Alții au scris că nu au primit nicio notificare, ci doar SMS-uri. Pentru alții, precum dispozitivele noastre de testare, totul a fost ok. Colectarea cât mai mult posibil de la clienții nemulțumiți posibile informații, a început să înțeleagă problema și a venit cu următoarea listă de restricții (această listă a rezultat ulterior într-o Întrebări frecvente cu drepturi depline):
  • Modul de economisire a energiei activat (de exemplu, Stamina pe dispozitivele Sony) afectează funcționarea notificărilor Push;
  • Utilizatorul trebuie să aibă cel puțin 1 activ cont Google pe dispozitiv;
  • trebuie să vă asigurați că dispozitivul dvs. are Versiune curentă aplicații” Servicii Google Joaca";
  • verificați dacă notificările pentru aplicație sunt dezactivate (bifați caseta de pe pagina aplicației din setările telefonului);
  • verificați dacă modul de fundal al aplicației este limitat (setarea se află în meniul „Utilizarea datelor”);
  • Documentația GCM precizează că notificările sunt trimise numai către anumite porturi, așa că merită luate în considerare și setările routerului, firewall-ului și antivirusului.
După ce am trimis acest memento tuturor clienților, am început din nou să așteptăm rezultatele. Și s-au dovedit a fi din nou „nu foarte buni”. Au început să sape mai departe.

În această etapă, mesajul scris de băieții de la Mail.ru a ajutat foarte mult. Acesta descrie în detaliu complexitățile implementării GCM pe partea clientului, precum și punctele din cauza cărora notificările Push refuză să funcționeze. retele mobile. În cele din urmă, a fost luată decizia de a-mi păstra conexiunea la server împreună cu GCM.

Înainte de a lua o decizie, merită evidențiate câteva foarte Puncte importante, care vă permit să restrângeți gama de dispozitive potențial „nefuncționale”:

  • problema apare numai atunci când este conectat la internetul mobil;
  • Potrivit clienților, problema apare pe Android versiunea 4 și superioară.
Și așa, să trecem la implementare.

Un dezvoltator Android cu experiență va spune imediat că există cel puțin 2 soluții la problemă: folosiți Service sau AlarmManager. Am încercat ambele variante. Să luăm în considerare primul dintre ele.

Pentru a crea un serviciu indestructibil de sistem care va sta în mod constant în fundal și va îndeplini sarcina noastră, am folosit metoda:

StartForeground(int notificationID, notificare notificare);
Unde

  • notificationId - unele identificator unic notificări care vor fi afișate în bara de stare și în cortina glisantă;
  • notificare - notificarea în sine.
În acest caz condiție prealabilă este de a afișa o notificare în bara de stare. Această abordare asigură că serviciului va primi o prioritate mai mare (deoarece interacționează cu partea UI a sistemului) atunci când există o lipsă de memorie pe dispozitiv și sistemul va fi unul dintre ultimii care îl descarcă. Nu avem nevoie de această notificare, așa că am folosit următorul truc: este suficient să lansăm al doilea serviciu simultan cu primul și pentru ambele servicii ca notificareID utilizați aceeași valoare. Apoi omorâți al doilea serviciu. în care notificarea va dispărea din bara de stare, dar funcționalitatea și capacitățile prioritare ale primului serviciu vor rămâne.

Dându-și seama această abordare, am trimis ansamblul pentru testare. Pe baza rezultatelor, s-a dovedit că sistemul încă descarca serviciul, iar din jurnalele am văzut cât de semnificative au apărut intervale de timp la solicitarea datelor în fundal de la serverul nostru. Prin urmare, am început să implementăm a doua opțiune - AlarmManager.

AlarmManager este o clasă care oferă lucru cu, aproximativ vorbind, un „ceas alarmă”. Ne permite să specificăm timpul după care sistemul va trimite o notificare de difuzare, care ne va trezi aplicația și îi va oferi posibilitatea de a efectua acțiunile necesare. Există câteva limitări ale modului în care funcționează această metodă și trebuie abordate:

  • datele despre „ceasurile alarmă” vor fi șterse după repornirea dispozitivului;
  • Datele de alarmă vor fi șterse după actualizarea aplicației.
Prima grebla pe care am calcat a fost metoda

SetRepeating()
care vă permite să setați un ceas cu alarmă care se repetă la un anumit interval. Înșurubându-l aceasta metoda, au început testarea, iar testele au arătat contrariul - „ceasul alarmă” nu s-a repetat. Am început să ne dăm seama ce se întâmplă și ne-am uitat la documentație. Și acolo au găsit răspunsul la întrebare - începând de la API lvl 19 (Kitkat), absolut toate „ceasurile cu alarmă” din sistem au devenit cele unice. Concluzie - citiți întotdeauna documentația.

Această greblă nu a fost un motiv de frustrare, deoarece soluția la problemă este destul de simplă - rulați un „ceas alarmă” și resetați-l după ce se stinge. Când am implementat această abordare, am dat peste următorul rake - s-a dovedit că pt diferite niveluri API-ul trebuie să seteze alarmele în mod diferit, dar nu s-a spus nimic în documentație. Dar această problemă Am rezolvat-o destul de simplu - la întâmplare și prin google. Mai jos este un exemplu de cod care vă permite să setați alarmele corect:

Private static void setUpAlarm (final Context context, final Intent intent, final int timeInterval) ( final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); final PendingIntent pi = PendingIntent.getBroadcast(context, timeInterval, intent, 0); am.cancel(pi); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) ( final AlarmManager.AlarmClockInfo alarmClockInfo = nou AlarmManager.AlarmClockInfo(System.currentTimeMillis() + timeInterval, pi); am.setAlarmClock(alarmClockInfo); else, if pi; (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) am.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi else am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval,); pi);
Vreau să vă atrag atenția asupra steagului AlarmManager.RTC_WAKEUP- cu ajutorul acestuia, sistemul va permite aplicației noastre să se „trezească” atunci când ecranul este inactiv, când dispozitivul este în stare blocată.

Această abordare cu „ceasuri alarmă” ne-a oferit rezultatul dorit- aplicația din fundal interogează corect serverul pentru date noi. În prezent finalizăm algoritmul. Pe acest moment Implementăm și testăm următoarea optimizare, care ne va permite să restrângem gama de dispozitive și, prin urmare, să reducem sarcina pe server:

  • mesajul trimis de GCM către dispozitiv conține un ID unic;
  • primind datele cerere GETîn fundal verificăm dacă o intrare cu același ID există deja pe dispozitiv;
  • dacă nu există astfel de date la nivel local pe dispozitiv, ne amintim acest ID și ora la care a fost primit T1;
  • asteptam PUSH cu acelasi ID, la primire ne amintim ora T2 si verificam diferenta dintre T2 si T1;
  • dacă diferența este mai mare decât un criteriu (valoare) temporar, atunci dispozitivul are o problemă cu livrarea notificărilor și pentru funcţionare corectă serviciul trebuie să solicite în mod constant date în fundal de la server (vă sfătuiesc să alegeți criteriul în funcție de problema care se rezolvă. În cazul nostru, criteriul a fost ales egal cu 5 minute);
  • această diferență ar trebui calculată de mai multe ori, de exemplu de 5-10 ori, abia după aceea se poate concluziona că dispozitivul are de fapt o problemă cu primirea notificărilor Push (acest lucru elimină situația unei banale deconectare a conexiunii, timeout etc.);
  • trebuie alungat acest algoritm periodic (de exemplu, o dată pe săptămână sau după actualizarea sistemului de operare pe dispozitiv).
Toate cele bune. Și mai puține astfel de cârje.

P.S.
A ajutat foarte mult în timpul procesului de testare