Örvitinn

Strætóappið klikkar í Android 6.0

busapp_villa.pngTók strætó í bæinn á föstudagskvöld en gat ekki greitt með Strætó appinu sem ég hef þó notað áður. Þetta var frekar bagalegt, ég átti a.m.k. einn miða og keypti tvo til viðbótar fyrir framan bílstjórann.

Svona má ekki að klikka. Frekar vandræðalegt að mæta í strætó og geta ekki borgað en samstarfskona reddaði málunum.

Kannski hefur þetta eitthvað með Android 6.0 að gera - ég hef ekki hugmynd. Miðað við þessar umræður er það sennilegt, sjá einnig umræður hér. Þarna eru ýmsar mögulegar lagfæringar.

Hér er a.m.k. loggurinn fyrir áhugasama - ég tók þó token út. Nexus5, Android 6.0. "Mínir miðar" valdir.

Stokkur, eruð þið til í að laga þetta fyrir mig svo ég geti notað strætómiðana mína!

11-02 10:10:49.125: D/Retrofit(21102): ---> HTTP GET https://app.straeto.is/pele/api/v1/tickets/valid/is 11-02 10:10:49.125: D/Retrofit(21102): pele-token: [deleted] 11-02 10:10:49.125: D/Retrofit(21102): version: 2131427373 11-02 10:10:49.125: D/Retrofit(21102): ---> END HTTP (no body) 11-02 10:10:49.181: D/Retrofit(21102): <--- HTTP 200 https://app.straeto.is/pele/api/v1/tickets/valid/is (55ms) 11-02 10:10:49.181: D/Retrofit(21102): : HTTP/1.1 200 OK 11-02 10:10:49.181: D/Retrofit(21102): Connection: keep-alive 11-02 10:10:49.181: D/Retrofit(21102): Content-Type: application/json;charset=UTF-8 11-02 10:10:49.182: D/Retrofit(21102): Date: Mon, 02 Nov 2015 10:08:47 GMT 11-02 10:10:49.182: D/Retrofit(21102): Strict-Transport-Security: max-age=15768000 11-02 10:10:49.182: D/Retrofit(21102): Transfer-Encoding: chunked 11-02 10:10:49.182: D/Retrofit(21102): X-Android-Received-Millis: 1446459049180 11-02 10:10:49.182: D/Retrofit(21102): X-Android-Response-Source: NETWORK 200 11-02 10:10:49.182: D/Retrofit(21102): X-Android-Selected-Protocol: http/1.1 11-02 10:10:49.182: D/Retrofit(21102): X-Android-Sent-Millis: 1446459049125 11-02 10:10:49.182: D/Retrofit(21102): {"status":0,"message":"","tickets":[{"token":"[deleted]","ticketName":"Stakt fargjald","displaySingle":"Farþegi","displayMultiple":"Farþegar","count":1,"purchaseDate":"2015-10-30 19:31:09","activationPeriod":4500,"activated":false,"secondsSinceActivation":0,"items":[{"desc":"Farþegi","count":1,"discount":0,"disclaimer":"","priceId":1}]},{"token":"[deleted]","ticketName":"Stakt fargjald","displaySingle":"Farþegi","displayMultiple":"Farþegar","count":1,"purchaseDate":"2015-10-30 19:30:14","activationPeriod":4500,"activated":false,"secondsSinceActivation":0,"items":[{"desc":"Farþegi","count":1,"discount":0,"disclaimer":"","priceId":1}]},{"token":"[deleted]","ticketName":"Stakt fargjald","displaySingle":"Farþegi","displayMultiple":"Farþegar","count":1,"purchaseDate":"2015-09-18 07:59:20","activationPeriod":4500,"activated":false,"secondsSinceActivation":0,"items":[{"desc":"Farþegi","count":1,"discount":0,"disclaimer":"","priceId":1}]}]} 11-02 10:10:49.182: D/Retrofit(21102): <--- END HTTP (1036-byte body) 11-02 10:10:49.191: D/Retrofit(21102): ---- ERROR https://app.straeto.is/pele/api/v1/tickets/valid/is 11-02 10:10:49.193: D/Retrofit(21102): java.lang.SecurityException: Can't make field constructor accessible 11-02 10:10:49.193: D/Retrofit(21102): at java.lang.reflect.Constructor.setAccessible(Constructor.java:334) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:97) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:79) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:71) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.MapTypeAdapterFactory.getKeyAdapter(MapTypeAdapterFactory.java:140) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.MapTypeAdapterFactory.create(MapTypeAdapterFactory.java:125) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.(ReflectiveTypeAdapterFactory.java:82) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.(ReflectiveTypeAdapterFactory.java:82) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ArrayTypeAdapter$1.create(ArrayTypeAdapter.java:48) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.(ReflectiveTypeAdapterFactory.java:82) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ArrayTypeAdapter$1.create(ArrayTypeAdapter.java:48) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.(ReflectiveTypeAdapterFactory.java:82) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.getAdapter(Gson.java:356) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.fromJson(Gson.java:802) 11-02 10:10:49.193: D/Retrofit(21102): at com.google.gson.Gson.fromJson(Gson.java:768) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:63) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:362) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) 11-02 10:10:49.193: D/Retrofit(21102): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 11-02 10:10:49.193: D/Retrofit(21102): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 11-02 10:10:49.193: D/Retrofit(21102): at retrofit.Platform$Android$2$1.run(Platform.java:142) 11-02 10:10:49.193: D/Retrofit(21102): at java.lang.Thread.run(Thread.java:818) 11-02 10:10:49.193: D/Retrofit(21102): ---- END ERROR

kvabb forritun
Athugasemdir

Daði Ingólfsson - 02/11/15 13:27 #

Hæ Þetta tengist 6.0 sem er bara komið á Google símana. Það er í raun búin að laga þetta, en það verður því miður ekki live fyrr en eftir 1-2 vikur því þetta er hluti af mun stærri uppfærslu.

Matti - 02/11/15 14:07 #

Takk fyrir viðbrögðin Daði, ég bíð spenntur eftir uppfærslu og borga með gömlu aðferðunum ef ég tek strætó þangað til :-)

Matti - 02/11/15 15:19 #

Ég verð þó að skjóta aðeins. Hér finnst mér agile hugmyndafræðin ekki vera notuð nægilega vel.

Þetta er klassískt dæmi um fix sem á að skella beint á master branch og publisha/koma til notenda. Það fix á svo líka að innleiða í release sem verið er að vinna í. Lagfæringar eiga að koma reglulega í öppum, uppfærslur sjaldnar.

Matti - 24/11/15 15:09 #

Í uppfærslu á appinu sem kom í dag virðist þetta komið í lag, a.m.k. get ég skoðað mína miða (það þarf að koma í ljós síðar hvort ég geti notað miðana, en ég geri ráð fyrri að það sé komið í lag).