2013-08-23 14 views
5

Ich versuche zu verstehen: Auf Android, Wie ermittelt TestFlight, dass es in einer Beta-Tester-Umgebung ist, und sollte Aktivität auf den TestFlight-Server hochladen? Es gab einige similarquestions Fragen über TestFlight auf iOS, aber keine zu Android.Welche Bedingungen müssen erfüllt sein, damit TestFlight Aktivitäten an den Server senden kann?

Ich habe die TestFlight SDK in die Android-App meines Unternehmens integriert, weil sie wie eine großartige Lösung für Beta-Tests und Remote-Logging aussah (wir verwenden sie bereits für iOS), aber ich kann sie nicht wirklich senden die Sitzungsinformationen zum TestFlight-Server. Sobald ich meine App über die TestFlight-App installiert habe, sehe ich sofort, dass sie über die TestFlight-Webkonsole installiert wurde und dann ... nada. Ich bekomme keine Sitzungsdaten oder Remote-Logs, obwohl ich eindeutig etwas bekommen sollte.

Was ich bisher getan haben:

  • Quadruple-geprüft meine Testflug api Schlüssel
  • Verifiziert für sicher, dass TestFlight.takeOff()
  • Bestätigte genannt zu werden, dass TestFlight.isActive() Berichte true
  • die apk Versuchte Unterzeichnung mit dem Debug-only-Schlüssel
  • Versuchte die Unterzeichnung der apk mit unserem Freigabeschlüssel
  • Auf den Androiden Protokoll auf Fehler im Zusammenhang Testflug (keine)
  • Kontaktiert vor ein paar Tagen Testflug zu unterstützen (ich habe Kontakt hergestellt, aber kein Fortschritt noch)

Meine aktuelle Vermutung ist, dass die Testflug lib denkt, dass es sich in einer Produktionsumgebung befindet und daher keine Protokolle und Sitzungsinformationen hochladen sollte.

Die SDK Documentation hat nichts zu bieten, um diese Frage zu beantworten, aber ich fühle, dass, wenn ich verstanden habe, welche Bedingungen es sucht, ich das ziemlich schnell festnageln könnte.

Ich stocherte in TestFlightLib.jar und festgestellt, dass TestFlight.isActive() wirklich nur berichtet, ob Sie bereits TestFlight.takeOff() aufgerufen haben, so das ist kein guter Indikator dafür, ob das ganze System funktioniert.

+0

entfernt Was sagen die freundlichen Leute auf http://help.testflightapp.com/ über Ihr Problem? – 323go

+0

Sie schlugen vor, die App mit dem Debug-Schlüssel neu zu signieren, was keinen Unterschied machte. Ich habe mich mit ihnen über Twitter und ihre E-Mail-Unterstützung unterhalten. –

+0

Ich sollte hinzufügen, ich habe auch die TestFlight SDK-Wissensdatenbank ohne Glück durchsucht. Die große Mehrheit der Artikel dort ist iOS-fokussiert, und die begrenzte Anzahl von Android-Artikeln gab mir keinen Einblick. –

Antwort

11

Bearbeiten: pro Isra's answer unten sieht es so aus, als ob mein erster Punkt (Batch Checkpoints) nicht mehr gültig sein könnte.

Nachdem ich ein paar E-Mails mit TestFlight-Unterstützung gehandelt habe, sehe ich Ereignisse und habe ein besseres Verständnis davon, was vor sich geht. Es gibt zwei Probleme:

  1. Testflug für Android Chargen checkpoint Ereignisse und sendet sie an den Server einmal 10 oder mehr Veranstaltungen gesammelt werden. Ereignisse werden nicht über die Lebensdauer von App-Prozessen hinweg beibehalten. Meine Test-App hat nur zwei oder drei Checkpoints erstellt, also wurde nichts an den Server gesendet.

  2. Es gibt ein offensichtliches Problem, bei dem Protokollereignis nicht an allen an den Server gesendet, wenn der Testflug Sitzung explizit mit TestFlight.endSession()

So beendet ist, ist die Abhilfe (bis jetzt) ​​explizit Rufen Sie regelmäßig TestFlight.endSession() an. Hoffentlich wird TestFlight dieses Verhalten in zukünftigen Versionen der Bibliothek ändern (oder zumindest dokumentieren).

+0

Sie sind ein Lebensretter. Ich habe ungefähr 2 Stunden verloren, um herauszufinden, warum es keine Protokolleinträge gibt. Danke, dass Sie sich die Zeit genommen haben, ihr Support-Team zu kontaktieren. – chitza

+1

Ich habe mehr als 2 Stunden verloren, um dieses Problem zu lösen! Ich bin auch neu in Android, was ein Doppel-Whammy versucht, um dies zur Arbeit zu bringen. Wie oft rufen Sie den TestFlight.endSession()? Müssen Sie direkt danach eine TakeOff() aufrufen? Jede Hilfe geschätzt, ich finde Android-Semantik viel schwieriger als IOS im Moment:/ – Matt

+1

Ich gab TestFlight ziemlich schnell nach dem Posten dieser Antwort. Wir sind nach Crashlytics für Remote Logging und Crash-Berichte umgezogen, und ich könnte nicht glücklicher sein. Ich empfehle sie sehr. –

0

Wir haben es durch den Aufruf TestFlight.startSession() über unsere Aktivitäten arbeiten onStart und TestFlight.endSession() auf OnStop.

Die zusätzlichen Schritte sind im TestFlight SDK nicht dokumentiert, aber es scheint, dass die App gezwungen ist, Sitzungsprotokolle an TestFlight-Server zu senden.

1

Ich werde einen Kommentar zur Checkpoint-Front machen. Ich kann sehen, dass Checkpoints sofort gemeldet werden, ohne dass Sitzungen beendet werden müssen. Sieht so aus, als hätten sie das Batching auf Android

Verwandte Themen