poniedziałek, kwietnia 01, 2013

Google Play Services dobre jest :-)

Niby autentykacja przy pomocy OAuth2 jest prosta, ale do niedawna robienie jej w Androidzie było straszne.
Do czasu ;-) do czasu gdy pojawiło się Google Play Services.
Właśnie się nimi bawię, docelowo chcę mieć w Bloggeroidzie autoryzację przy pomocy właśnie Google Play Services.

Oczywiście po drodze wychodzą pewne niedogodności, np. najłatwiej jest mi sterować przepływem używając wait i notifyAll ;-)
Jeśli GoogleAuthUtil (część Google Play Services) zwróci mi null jako tokena, albo poleci wyjątek to wtedy mam tak, że synchronizuję się na aktywności czy też Application i robię wait.... a GoogleAuthUtil albo wysyła intenta na którego zarejestrowany jest mój BroadcastReceiver, który po prostu robi notifyAll (uprzednio się synchronizując), w innym przypadku jest to notifyAll wołane z onActivityResult().
Wiem, że brzydko, świadczy o tym to, że same te metody nie mają wersji blokujących i sam sobie je muszę pisać ;-) ale takie podejście ma pewne zalety, mimo wszystko kod jest prostszy.

Oczywiście Bloggeroid jest używany też na urządzeniach, które nie mają Google Play (np. na emulatorze gdy testuję ;-)) a tam nie ma też Google Play Services dlatego pozostanie w kodzie nadal aktywność do wpisywania nazwy konta i hasła.

To zresztą generuje problemy... bo userów chciałbym przerzucić na nowy system a do tego będę musiał ich jakoś niezbyt natrętnie poprosić o zgodę...
posted from Bloggeroid



Podobne postybeta
Programowanie trudne ;-)
Papa dla ClientLogin
Czemu wait() i notify()/notifyAll() w ogóle działają?
Trudniej jest lepiej.... czyli AccountManager w Androidzie...
Marudzenie nocne ;-)