Vibora-Feed App

ViboraFeed - unsere Android App ist da

Im Rahmen meines Master-Studiums konnte ich eine Android App entwickeln, aus der nun dieser Feed-Reader ViboraFeed geworden ist. Aktuell läuft der Merge Request zur Aufnahme in den f-Droid Store.

Alternativ lässt sich die APK auch über meine github Seite zu ViboraFeed herunter laden. Die APK ist von mir signiert und wird sich daher von der aus f-Droid unterscheiden.

app-release.apk

Die Vibora-Feed App ist nun bei f-Droid

Februar 2017: Vibora-Feed ist nun auch im google Play Store (kostenlos, werbefrei)

Was kann ViboraFeed?

Die App ist ein ganz normaler RSS-Feed Reader für nur 2 Feeds: Einen, den man selber einstellen kann und einen für die RSS-Feeds von Vibora.de. Auf diese Weise ist man immer darüber informiert, wenn ein neuer Artikel bei Vibora.de veröffentlicht wird. Die ursprüngliche Idee kam im Zusammenhang mit meiner DIY-Smartwatch. Diese hatte Notifikationen des Handys 1:1 angezeigt. Leider machen die mir bekannten RSS-Feed Reader folgendes: sie aggregieren die Nachrichten und sagen nur "3 neue Nachrichten". Das ist dumm, da in einer Notifikation der typische "Anreißertext" eines Feeds super rein passt. Durch die ViboraFeed App wird aus jeder Feed-Nachricht eine Notifikation gemacht mit (so weit wie möglich) dem ganzen Feed-Text. Ach so: der "Alarm-Manager" ist sehr Ressourcen schonend eingestellt und sorgt dafür, dass nicht automatisch beim ersten Start der App bereits alle News "geholt" werden. Das irritiert zu Anfang. Was ganz gut gelöst wurde: sobald das Handy mit dem Booten fertig ist, wird auch der Alarm-Manager, der für den regelmäßigen Feed-Check verantwortlich ist, gestartet.

Features

  • Link-Button zum original Artikel in der Notifikation
  • alle und einzelne News-Feeds können als gelesen markiert oder gelöscht werden
  • Prüfung auf neue Nachrichten alle 30 Minuten (variiert um 4 Minuten), 1, 3 oder 6 Stunden
  • Erzeugung von Thumbnails zum Feed, falls eine Bildquelle im Feed gefunden wird
  • ein netter Benachrichtigungs-Sound ("Rrrrrrrrriing")
  • Notifikations LED kann in Farbe und Verhalten angepasst werden
  • Sollte dein Handy auf Englisch stehen, ist die App auch auf Englisch
  • Um Datentransfer zu reduzieren, wird zuvor an die Feed-URL ein "If-Modified" Request gesendet
  • Link zur Feed-Quelle wird im Browser (eine Auswahl wird gezeigt) geöffnet
  • In-App-Nachricht: Statt z.B. 10 Notifikationen zu erzeugen wird nur eine "Head-Up" Notifikation gezeigt
  • Wenn z.B. wegen Flugmodus kein Refresh erfolgt, wird es alle 75 Sekunden erneut probiert

Sollten einmal auf einen Schlag 40 neue Nachrichten kommen: keine Angst! In der App gibt es im Options-Menu eine Funktion, um alle Nachrichten/Notifikationen zu entfernen.

Tests mit folgenden RSS-Feeds

Um insbesondere die Bild- und die "If-Modified"-Funktion zu testen, habe ich als Feed URL folgende Feed-Quellen getestet:

  • http://www.taz.de/!p4608;rss/ (TAZ mit Bildern)
  • http://www.tagesschau.de/xml/rss2 (Tagesschau)
  • http://www.deutschlandfunk.de/die-nachrichten.353.de.rss (Deutschlandfunk)
  • http://www.wz.de/cmlink/wz-rss-uebersicht-1.516698 (Westdeutsche Zeitung, manchmal Bilder)
  • http://feeds.t-online.de/rss/nachrichten (t-online News, evtl. Bilder)
  • http://news.yahoo.com/rss/ (yahoo news, evtl. Bilder)
  • http://feeds.bbci.co.uk/news/world/europe/rss.xml (BBC, evtl. Bilder)

Derzeit hat Vibora noch kein Bild im Feed und daher musste ich für die Funktion auf andere Quellen zugreifen. Da die Rechte am Bild bei den Feed Anbietern sind, werden in der App nur verkleinerte Thumbnails (wie Google es macht/darf) abgespeichert. Zur Sicherheit habe ich in Screenshots diese trotzdem (inkl. Text) verfremdet. Die App habe ich ab Version 4.1.1 (Nexus S) bis Version 6 getestet.

Expunge and Ignore

Wenn du einen Feed aus der Liste in der App (via Long-Klick und Kontext-Menu) löschst, dann kann ich das Löschen nicht umgehend in der Datenbank machen. Beim nächsten "Refresh" würde dieser Feed erneut als "neu" gefunden. Daher werden die Feeds nur als "gelöscht" markiert. Aber irgendwann müssen/sollten die Feeds trotzdem aus der Datenbank entfernt werden, nicht wahr? Aus diesem Grund wird beim Starten der App eine Bereinigung (Expunge) der Datenbank vorgenommen: gelöschte News-Feeds werden nach 3 Tagen aus der Datenbank entfernt. Um eine Irritation mit neu abgeholten News-Feeds zu vermeiden, werden die, die älter als 3 Tage sind, grundsätzlich ignoriert.

Da Vibora.de nur ca. alle 14 Tage eine neue Nachricht generiert, ist für diese News-Feeds eine Zeitspanne von 90 Tagen eingestellt.

Wie kommt das ganze nach f-Droid?

Wie in meinem letzten Artikel zu f-Droid genauer beschrieben, läuft das alles über Gitlab.com ab - alternativ kann man auch sein eigenes Repository ins Netz stellen. Hier ein paar Befehle und Details zur Veröffentlichung der App im Standard-Repository von f-Droid:

Damit man den fdroid Befehl nutzen kann:

cd fdroidserver
export PATH="$PATH:$PWD/fdroidserver"
export ANDROID_HOME=/home/tux/Android/Sdk/

Zurück zu fdroiddata, in dem man eine meta-Datei machen muss. Außerdem sollte man sich nochmal von den f-Droid Machern eine aktuelle Version holen, diese mergen und auf der Version im eigenen Master-Branch umschalten:

cd ../fdroiddata
git fetch upstream
git rebase upstream/master

Sollte der Rebase Ärger machen, weil man lokal doch irgendwo was unerwartet anders hat, was man aber ignorieren will, dann:

git rebase --skip

Das ganze sollte nun auch auf deine Version von fdroiddata in gitlab.com hochgespielt werden:

git push origin master

Nun geht es darum dein github App Code zu holen und eine erste Metadatei zu erzeugen:

fdroid import --url https://github.com/no-go/ViboraFeed --subdir app

Mit vim als Texteditor hab ich dann meine Anpassungen gemacht:

vim metadata/de.vibora.viborafeed.txt

Und laut Anleitung kommt ein erster Check sowie ein Reinterpretieren der Meta Daten:

fdroid readmeta
fdroid rewritemeta de.vibora.viborafeed
fdroid checkupdates de.vibora.viborafeed
fdroid lint de.vibora.viborafeed

Zu guter Letzt ein check, ob fdroidserver auch eine APK erzeugen könnte:

fdroid build -v -l de.vibora.viborafeed

Die erzeugte APK ist leider nicht testbar, weil ein Schlüssel darin fehlt. Das könnte man in fdroidserver noch einrichten, ist aber zur Veröffentlichung über die Standardquelle der f-Droid App nicht notwendig (die signieren die App für dich). Macht der Build keinen Ärger, dann geht es weiter mit:

git add *
git commit -m "add Vibora-Feed"
git push

Damit ist die Metadatei fertig und euer Branch vom original fdroiddata kann auf der Seite fdroid/fdroiddata mit einem Merge-Request (Auf + klicken und "new merge request" wählen) beginnen. Das + seht ihr natürlich nur, wenn ihr auf gitlab.com eingeloggt seid. Das geht auch über den Login von github.org.

Ein wenig peinlich: Wenn ich die Metadaten ändern will, muss ich einen Teil des Ablaufs erneut durchführen. Z.B. Hab ich 301 statt 304 als Respose in die Beschreibung geschrieben (bei der Auswertung des "If-Modified" Requests). Sollte ich jedoch mit einem Tag (git tag v1.5 -m "besser") eine neue Version auf github hochladen, so wird das von f-Droid erkannt und als neue Version in der f-Droid App angeboten. Dafür ist die Angabe

Auto Update Mode:Version v%v
Update Check Mode:Tags

in den Metadaten.

Update (28.08.2016)

Wie sich im Chat zum Merge Request gut nachlesen lässt, hatte ich so meine git-Problemchen und versehentlich die Commits von anderen Usern in meinem Commit zusammengefasst. Dieses Zusammenfassen von Commits nennt man "squash" und dient ein wenig der Bereinigung der Commits in git, damit es nicht zu viele Einzelne werden. Weil es nicht meine Commits waren und es noch andere Merge Requests (von den Besitzern) gab, kam es zum Konflikt. Boris von f-Droid hat es aber super gelöst. An dieser Stelle noch mal danke an die Leute von f-Droid 😀

Vibora-Feed in f-Droid

Siehe auch: Vibora-Feed im Wiki bei f-Droid

1 Gedanke zu “ViboraFeed - unsere Android App ist da

Schreibe einen Kommentar