Android JB neodpovídá na ping

MilanK

Re:Android JB neodpovídá na ping
« Odpověď #15 kdy: 31. 08. 2013, 10:34:08 »
U Gmailu, IM a dalších aplikací funguje push. Telefon se nechá usnout a šetří se baterie. Ale server má možnost ho po GSM probudit a říct mu, že se něco děje. Telefon se pak normálně připojí a zjistí si, co je nového. Na rozdíl od udržování přímého spojení nebo pravidelného dotazování to výrazně šetří baterii.
Je k tomu probouzení přes GSM nějaké technické info? Není to "jen" IMAP IDLE?


Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Android JB neodpovídá na ping
« Odpověď #16 kdy: 31. 08. 2013, 12:08:26 »
IMO je to probouzení přes GSM blbost, nedokážu si představit, že by servery byť třeba Google mohly nějak na úrovni GSM komunikovat s každou ze stovek sítí na světě a probouzet v ní přihlášené telefony. Základní info o GCM je tady http://developer.android.com/google/gcm/index.html ale nízkoúrovňovou technickou informaci o tom, jak u je telefonů v deep sleep zajištěn příjem dat, sem tam nenašel. Výhoda je, že aplikace, které toto využijí jsou prostě systémem vyvolány a nemusí mít puštěný v telefonu proces na pozadí nebo se pravidelně probouzet a něco olizovat. Nevýhoda, je že tam musí být serverová část, která komunikuje se serverovou částí GCM u Google tj. například u e-mailů nezávislý IMAP klient toto prostě nemůže použít, musel by to implementovat přímo ten IMAP server nebo by autor aplikace musel někde provozovat další, server, který by zvenku ten IMAP server hlídal (a tedy musel znát přihlašovací údaje) a následně klienta notifikoval.

Re:Android JB neodpovídá na ping
« Odpověď #17 kdy: 31. 08. 2013, 12:54:03 »
Google (ale i Apple a všichni ostatní) pro to nabízí jak klient, tak server. Klientskou část v Androidu zajišťuje Google Play. Funguje to tak, že klient vyvolá spojení proti push serveru u Google a naobjednává si události, které ho mají později vzbudit. Pak se to spojení nechá viset v accept režimu a celý telefon může usnout včetně Wi-Fi a celého systému. Zůstane žít jen rádio, které udržuje spojení s GSM sítí. Tím se maximálně šetří baterie, nemusí se udržovat spojení kvůli IDLE v IMAP, ani se neprovádí energeticky nároční polling.

Pokud se stane objednaná událost (třeba přijde mail), push server se o tom dozví, otevře spojení a může při tom klientovi poslat i nějaká menší data (třeba předmět mailu jako základní info). Rádio zprávu dostane, probudí zbytek telefonu a doručí systému (resp. aplikaci Google Play) celou tu událost, podle které je pak rozhodnuto, která aplikace je probuzena (v našem příkladu mail klient) a zda jí mají být předána nějaká data z push zprávy nebo si je už sama pak vyžádá třeba od svého IMAP serveru.

Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Android JB neodpovídá na ping
« Odpověď #18 kdy: 31. 08. 2013, 13:43:00 »
Ano, tento vysokoúrovňový přehled se dá vyčíst z odkazu co sem uvedl. Ta zásadní otázka je jak je technicky vyřešeno to, že ten push server je schopen to na telefon dotlačit i když ten spí.

Re:Android JB neodpovídá na ping
« Odpověď #19 kdy: 31. 08. 2013, 17:09:55 »
Google (ale i Apple a všichni ostatní) pro to nabízí jak klient, tak server. Klientskou část v Androidu zajišťuje Google Play.
Takze by teoreticky slo rozjet si svuj vlastni IMAP server, ktery by to umel? A jako klienta pouzit treba K-9 mail.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."


Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Android JB neodpovídá na ping
« Odpověď #20 kdy: 31. 08. 2013, 17:26:42 »
Jo, K9 je OSS, OSS IMAP servery se vyskytují rovněž, takže by to určitě doprogramovat šlo.

Re:Android JB neodpovídá na ping
« Odpověď #21 kdy: 01. 09. 2013, 00:22:40 »
Urcite by to slo doprogramovat. Me by hlavne zajimalo, jestli uz neco svobodneho s touto funkci existuje. Urcite by se to hodilo dost lidem.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

MobiLLion

Re:Android JB neodpovídá na ping
« Odpověď #22 kdy: 01. 09. 2013, 23:12:37 »
Petr Krčmář: podle toho co píšeš je možné, že některé aplikace ve spánku fungují (resp. jsou on-line) a některé ne?

Tonda: ano, přes den jsem se s problémem nesetkal, v noci pak pravidelně. Dneska v noci vyzkouším dostupnost z Whats appu, podaří-li se mi se vzbudít, okolo 4. ráno si pošlu zprávu a jsem zvědavej, jestli hned dorazí.

MobiLLion

Re:Android JB neodpovídá na ping
« Odpověď #23 kdy: 02. 09. 2013, 09:14:47 »
Tak jsem v noci zkoušel, jak se v noci data chovají. Wi-Fi jsem vypnul, nechal jsem zapnutá jen 2G datové přenosy. Cca o půlnoci jsem šel spát, ve 3 ráno jsem si poslal zprávu na Whats app a... nepřišla. Po 5 minutách jsem zapnul displej (ani jsem ho neodemykal), data se okamžitě připojila a zpráva přišla. Hned půl hodiny jsem vyzkoušel to samé znovu a zpráva opět nepřišla, to znamená, že JB ukončí data za méně než půl hodiny (!!!). Fuj, to je hnus. Každopádně si myslím, že takto prasácky se to chová jen v noci.

Ještě jednou jsem procházel nastavení JB a hledal, jestli přece jen nemůže být zakopaný pes tak. Položky v nastavení, které ovlivňují chování dat, by měly být tyto:
- nastavení - napájení - úsporný režim - datové připojení ("přepnout do spánku, když je obrazovka vypnutá") - tady mám odfajfkováno (modrá fajfka nesvítí)
- pouze pro Wi-Fi pak je ještě: nastavení - Wi-Fi - nabídka - pokročilé - nechat Wi-Fi zapnutou i při spánku - tady mám vždy

Tak nevím. :-/

Re:Android JB neodpovídá na ping
« Odpověď #24 kdy: 02. 09. 2013, 09:49:51 »
Ano, tento vysokoúrovňový přehled se dá vyčíst z odkazu co sem uvedl. Ta zásadní otázka je jak je technicky vyřešeno to, že ten push server je schopen to na telefon dotlačit i když ten spí.
Vývojář z Google, který tu push službu (dnes se jmenuje Google Cloud Messaging) vytvořil, tvrdil, že používají dlouhotrvající spojení. Chápu to tak, že mobil naváže TCP/IP spojení se servery Googlu, kterým normálně neproudí žádná data (nanejvýš občas nějaký keep-alive paket). Když je potřeba doručit notifikaci na telefon, pošle se právě tímhle spojením. Protlačení na telefon je pak úplně standardní doručení paketu přes GSM síť – je to obyčejný paket, který je součástí aktivního TCP/IP spojení (které akorát shodou okolností dlouho nepřenášelo žádná data).

Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Android JB neodpovídá na ping
« Odpověď #25 kdy: 02. 09. 2013, 11:36:04 »
MobiLLion, ale je otázka zda je to prasárna tvůrce té aplikace (jestli používá GCM) nebo Androidu.

Filip Jirsák, to sem v podstatě čekal, tu magii jak to zařídí GSM síť na podnět zvenčí sem si dost bobře nedokázal představit. Musí mít nějak dobře vychytané aby udržování toho trvalého spojení nežralo moc baterky a fungovalo i během deep sleep.

Každopádně já v noci spím a toto neřeším :-)

MobiLLion

Re:Android JB neodpovídá na ping
« Odpověď #26 kdy: 02. 09. 2013, 12:26:53 »
No, ten Whats app bych ještě dokázal překousnout, ale ta nefunční synchronizace mailu mi pořádně vadí. Ještě mě napadá vyzkoušet třeba Skype. Ale spíš bych to viděl na bug (nebo nedejbože vlastnost) Androidu. Soudím podle toho, že nefunguje jak Whats app, tak K-9, i poštovní klient z Androida...

Teď ještě koukám, že v K-9 mám nastaveno: Dotazovat se při PUSH připojen (zakliknuto) a obnovit připojení IDLE každou minutu.

Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Android JB neodpovídá na ping
« Odpověď #27 kdy: 02. 09. 2013, 12:34:24 »
Tak jasně, při připojení na nějaký obecný IMAP server GCM z důvodů popsaných výše nejde použít. Taky to může být nějak nakopnutá ta konkrétní ROM.

Každopádně jak už sem dvakrát psal, řešením je zabránit telefonu usnout, což zajistí nabíječka nebo na to určitě bude existovat nějaká aplikace, ale bude to žrát baterku, takže to zase skončí na té nabíječce.

Re:Android JB neodpovídá na ping
« Odpověď #28 kdy: 02. 09. 2013, 13:28:03 »
Každopádně jak už sem dvakrát psal, řešením je zabránit telefonu usnout, což zajistí nabíječka nebo na to určitě bude existovat nějaká aplikace, ale bude to žrát baterku, takže to zase skončí na té nabíječce.
Nebo si kazdych X minut pomoci app Llama zapnout displej, nebo wifi a po minute zase vypnout.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Re:Android JB neodpovídá na ping
« Odpověď #29 kdy: 02. 09. 2013, 13:43:46 »
Musí mít nějak dobře vychytané aby udržování toho trvalého spojení nežralo moc baterky a fungovalo i během deep sleep.
K tomu podle mne stačí udržovat tu aktivitu spojení ze strany telefonu a tam k tomu stačí obyčejný budík. Nejsložitější je podle mne vyladit ten interval tak, aby nějaké NATy a filtry u operátorů ta spojení neztrácely. Ale Google má dost velký testovací vzorek uživatelů, na kterém to mohl vyzkoušet a odladit :-)