Ich hatte Anfang 2019 eine erste Testversion meiner Android App. Hier erzähle ich euch alle Arbeitsschritte die ich in diesem Jahr machte um die App für die Öffentlichkeit fertigzustellen.
Ziel des Releases?
Das Ziel ist ganz klar. Ich will eine Android App machen. Ich möchte sie noch 2019 veröffentlichen. Sie soll zumindest so weit fertig sein, dass keiner sagen kann: “Das ist aber noch eine Testversion.”. Es soll alles da sein was eine App mindestens braucht. Man soll etwas kaufen können und ich will, dass sie so gut ist, dass ich dafür Werbung machen kann. Dabei soll die App zumindest die Werbeausgaben wieder einspielen.
Die App heißt “Zweig” und ist ein interaktives Hörspiel. Man hört kurze Hörspiel Sequenzen und am Ende kann man eine Entscheidung treffen um den Verlauf der Geschichte zu bestimmen. Um diese Entscheidung zu treffen sollen verschiedene Sensoren des Handys verwendet werden.
Guest Account
Für neue User habe ich eine große Änderung eingebaut. In meiner ersten Version musste man sich registrieren um in die App rein zu kommen. Jetzt lege ich einfach für jeden automatisch im Hintergrund ein Gastkonto an. Das ist viel einfacher und schneller. Bisher sehe ich noch keinen Grund warum ich registrierte User brauchen sollte. Ich kann mir schon Features ausdenken für die ich den Usernamen brauchen würde. Davon bin ich aber noch weit entfernt.
Analytics events
Ich halte Analytics für sehr wichtig. Denn nur wenn man weiß wie sich die User verhalten, kann man auch fundierte Entscheidungen treffen. Darum habe ich für dieses Update viele Firebase Analytics Events eingebaut.
Neues Icon
Die Grundlage für das Icon das für Reitwang in der Liste angezeigt wird, war eine Zeichnung mit Wasserfarben. Dafür habe ich verschiedene Motive die in der Geschichte vorkommen gezeichnet. Ich habe 5 verschiedene Icons. Ich will später noch einen A/B Test machen um das Beste zu finden.
Hörspiel Reitwang aufnehmen
Ein sehr großer Arbeitsschritt war die Aufnahme des Hörspiels Reitwang. Hier habe ich monatelang mich selbst und andere aufgenommen und geschnitten und Hintergrundgeräusche gesucht und gemischt und gemastert. Das war mein erstes Hörspiel. Es war mir ein besonderes persönliches Anliegen das umzusetzen.
Mehr IAB Infos
Die Datenstruktur für ein Spiel habe ich erweitert. Es werden jetzt alle Mitwirkenden gespeichert um sie am Spielende anzuzeigen. Es gibt eine Iconurl für das Bild in der Listenansicht. Es gibt eine Preview Url für das Hörbeispiel. Die Altersempfehlung wird gespeichert und auch die Permissions die dieses Hörspiel braucht. Reitwang verwendet zB. das Mikrophon und dafür muss ich vorher um Erlaubnis fragen. Das mach ich natürlich erst wenn jemand auch wirklich dieses Spiel runterlädt.
Liste updaten
Es ist möglich in der Listenansicht nach unten zu wischen um die Liste zu aktualisieren. Dazu habe ich dieses Tutorial verwendet.
Listenlayout
Die einzelnen Listeneinträge der Spiele wurden verbessert. Es gibt jetzt ein Icon, ein Textfeld für die Altersempfehlung einen Prelisten button um ein kurzes Beispiel zu hören und einen Button zum kaufen.
Spielstand speichern
Eine Hörspiel Session kann sehr lange dauern. Reitwang ist ca. 20 Minuten lang. Darum ist es besonders Wichtig den Fortschritt des Spielers zu speichern. Ich mache das so, dass ich am Anfang jedes Kapitels in der Datenbank einen Eintrag mit mit Spiel und Kapitel für jeden User anlege. Beim Spielstart wird der Wert dann wieder ausgelesen.
Entscheidung “touch count”
Um nach einem Kapitel eine Entscheidung zu treffen, musste ich für die erste Geschichte ein paar Arten der Entscheidungsfindung einbauen. Beim “touch count” wird die Anzahl der Finger gezählt die den Bildschirm berühren. Man berührt den Bildschirm also mit einem Finger für die erste Möglichkeit und mit 2 Fingern für die zweite und so weiter.
Entscheidung “touch speed”
Beim “touch speed” muss man so schnell wie möglich auf den Bildschirm drücken. Dabei werden die Klicks pro Minute berechnet. Die Geschwindigkeit bestimmt dann die Entscheidung.
Entscheidung “step”
Dann gibt es eine Art der Entscheidungsfindung bei der man 5 Sekunden Zeit bekommt und so viele Schritte wie möglich machen soll. Dafür wird der Schrittzähler des Handys verwendet. Die Anzahl der Schritte bestimmt die Entscheidung.
Entscheidung “loud”
Die schwierigste Interaktionsart misst den Geräuschpegel. Wenn man sich für 5 Sekunden leise verhält wird einen andere Entscheidung getroffen als wenn man schreit. Hier bin ich mir immer noch nicht sicher ob das bei den meisten Menschen funktioniert. Denn ein Computer nimmt Geräusche nun mal ganz anders wahr als ein Mensch. Denn ein konstanter Geräuschpegel im Hintergrund wird von Menschen fast nicht wahrgenommen, auch wenn der Computer ständig 70 dB registriert.
Entscheidung “swipe”
Die einfachste Art den Verlauf der Geschichte zu bestimmen ist das Swipen. Hier werden einfach mehrere beschriftete Richtungspfeile angezeigt und man muss in die entsprechende Richtung wischen.
End state
Wenn ein Spiel zuende ist wird eine Seite angezeigt bevor man wieder in die Listenansicht raus kommt. Da steht dann nochmal was man gespielt hat, wie lange das Spiel gedauert hat und die Mitwirkenden Personen sind aufgeführt.
About state
Auf der “Über die App” Seite hab ich das Layout überarbeitet. Vorher hatte ich 2 Webseitenlinks als Text. Dafür habe ich jetzt Icons mit Beschriftung verwendet. Außerdem wird auch die Version angezeigt.
Kaufen
Zuletzt habe ich dann noch eingebaut, dass das Reitwang Spiel kostenpflichtig ist. Den In-App kauf wickle ich mit der Google Play Billing Library 2 ab. Das war für mich das erste mal, dass ich die neuen Billing Library verwendet habe. Es ist nicht sehr kompliziert und auch nicht viel anders als früher mit der AIDL Version. Es gibt aber ein paar neue Features. zB. die Subscriptions oder ein Kauf der erst etwas später freigeschaltet wird. In meiner Spieledatenbank sind die kostenpflichtigen Spiele markiert. Wenn die App startet, werden die kaufbaren Artikel vom Playstore geholt und mit den Einträgen in meiner Datenbank verglichen. Ein Spiel wird angezeigt wenn es in beiden eingetragen ist. Dann verberge ich den Download Button einfach so lange der Artikel nicht gekauft ist.
Was haltest du davon wie man in meiner App Entscheidungen treffen kann?