24.05.2011 / Timo Hetzel

App Store: In Review

Der nächste Undsoversity-Workshop steht an: Chris Marquardt setzt seinen Lightroom-Lehrgang fort. Die Videos sind so gut wie fertig, die Website steht, der Shop läuft sich schon warm. Nur Apple mag nicht in die Gänge kommen. Ich habe aus den letzten Releases gelernt und den In-App-Artikel für die iPhone-App schon vor einer ganzen Weile angelegt. Bisher wurden die auch relativ zügig durchgewunken. Diesmal hakt es ein wenig.

Stellt sich die Frage: Den Workshop in drei Stufen veröffentlichen (Web, iPhone-App, iPad/iPhone-Standalone-App), oder warten, bis sich der Workshop nach und nach durch die Review bei Apple geschlichen hat, und dann alles auf einmal rauslassen?

14.04.2011 / Timo Hetzel

Bits und so App 1.1 Promo + T-Shirts

2X so glücklich: Player mit 2X, App 2X so günstig, In-App-Plus 2X billiger. Nur noch heute!

Bits und so App im App Store

Bei diesem Update wieder dazugelernt:

  • Bis ein Preisupdate durch alle Schichten des App Stores sickert, können mehrere Stunden vergehen. Wenn der angezeigte Preis nicht mit dem Preis auf dem Zahlungsserver übereinstimmt, failed die Transaktion mit der Fehlermeldung “Der Artikel wird gerade überarbeitet” – allerdings erst, wenn der Kunde schon sein Passwort eingegeben hat.
  • Die neuen Screenshots haben zwei Tage gebraucht, um überall im App Store sichtbar zu werden
  • Wenn der Nutzer In-App-Purchases in den Einstellungen verboten hat, sich aber nicht mehr daran erinnert, fehlt in dieser Version eine sichtbare Fehlermeldung (canMakePurchases)
  • Auch manche Jailbreak-Varianten scheinen In-App-Purchases immer noch erfolgreich zu verhindern. Auch hier fehlt eine sichtbare Fehlermeldungen, wenn wir keine lokalen Preise holen können.

Übrigens: Alle neuen Bits und so Plus-Mitglieder können ab Freitag ab sofort auf bitsundso.de/status ein Bits und so T-Shirt für 19,99€ einzeln bestellen.

Vielen Dank an alle Käufer!

Changelog für die Bits und so App 1.1:
2X: Wiedergabe in doppelter Geschwindigkeit
30 Sekunden zurückspulen-Button
Share-Button (Twitter, Facebook, Email)
Neuer Live-Player mit Twitter-Widget
Finger nach unten ziehen für feines Scrubben im Player
Pull to Refresh in der Episodenliste

Now Playing-Button
Bessere Unterstützung von Fernbedienungs-Kommandos
Weniger Verwirrung beim Upgrade auf Plus
Aktuelles Kapitel wird zuverlässiger angezeigt
Plus-Verlängerung legt keinen neuen Account an
Erinnerung an ablaufende Plus-Mitgliedschaft
Kosmetik im About-Screen
Stabilere Push-Registrierung
Fixiert Crash beim Aufrufen der Kapitel (hoffentlich)
Bessere Playback-Performance auf Devices der zweiten Generation
Kann Spuren von In-App-Beeren enthalten

1.04.2011 / Timo Hetzel

Server-side Auto Renewable Subscription Receipt Verification

Update 10/2011: Watch the WWDC 2011 video on in-app purchases. This clarifies some of the points in this post and introduces a handful of useful fields in the receipt.

I think Apple’s documentation on checking receipts for auto-renewable in-app subscriptions is a little sparse. I overlooked this paragraph when first reading the documentation and wasn’t aware of its ramifications.

In App Purchase Programming Guide:

The response also includes an additional latest-receipt field; if the user’s subscription is active and was renewed in a transaction that took place after the transaction you provided to the App Store, the latest-receipt field includes a new base-64 encoded receipt for the latest renewal for this subscription. Your server can use this new receipt to maintain a record of the most recent renewal.

Here’s a sample response where receipt and latest_receipt are identical, we’re inside the first subscription period.

Screen shot 2011-04-01 at 12.48.50

When your app is launched regularly, everything is just about the same as with good old-fashioned non-consumable subscriptions. The app receives restored transactions to verify via your server.

When the app isn’t launched, you may still want to be able to stay in sync with the user’s subscription, even when he is not running the app. You can have a scheduled task on your server that can periodically replay the last known receipt to Apple, and if the latest_receipt differs from the receipt you just sent, you can send it right back to Apple to get the latest renewal date.

latest_receipt_info is not documented, so it might be a safer bet to actually use latest_receipt’s contents.

Use the purchase_date within the latest_receipt to calculate the current subscription period. The length of time for every period is not contained within the receipt date, so you need to calculate it from your product_id or item_id.

By doing this, you can maintain accurate subscriber stats on the server or grant paying users web access to content originally purchased in the app.

16.02.2011 / Timo Hetzel

Neue In-App-Abos

Apple hat heute die technische Dokumentation für die neuen Abonnement-In-App-Käufe veröffentlicht. Wir haben ja in Bits und so #233 und #234 ausführlich über den ersten Anbieter eines solchen Abos, “The Daily” gesprochen.

Hintergrund

inappflow
Bisher gab es zwei Hauptsorten von In-App-Käufen:

  • Verbrauchsgüter (Consumables)
    • z.B. Munition in einem Shooter. Einmal aufgebraucht muss für neues Geld nachgekauft werden
  • Nicht-Verbrauchsgüter (Non-Consumables)
    • z.B. ein Level-Pack in einem Spiel, oder ein e-Book-Download. Kann durch erneuten Kauf auf dem gleichen iTunes-Account auf einem anderen Gerät gratis erneut geladen werden.
    • Eine App kann solche vorhandenen Käufe für einen Kunden beim App Store anfordern und bekommt dann Kopien der Kaufquittungen verarbeiten. Das wird meiner Erfahrung nach bisher nur von wenigen Apps tatsächlich implementiert.

Einen Sonderfall von Verbrauchsgütern stellen die alten Abonnements dar. Sie kosten bei jedem Kauf erneut Geld, nur muss der Anbieter der App selbst über einen Account auf dem eigenen Server sicherstellen, dass der Benutzer der App auch auf anderen Geräten auf den bezahlten Inhalt zugreifen kann. Die Bits und so App vergibt deshalb beim ersten Kauf eines solchen alten, nicht verlängernden Abos einen anonymen Benutzernamen, der anschließend mit Name und Emailadresse personalisiert werden kann. Damit kann der Benutzer den Account auf einem anderen Gerät eintragen, ohne erneut zu bezahlen, oder den Account auf dem Mac/PC in iTunes nutzen, um auf das Premium-Angebot zuzugreifen.

Die komplette Businesslogik hinter diesen Abos findet in der App und auf dem Server des Inhalteanbieters statt. Apple hat für diesen Typ von In-App-Kauf keinerlei Konzept von “Laufzeit”.

Andere Apps, wie z.B. der Spiegel auf dem iPad verlangen zuerst die Registrierung, und buchen dann im Anschluss das alte Abo auf diesen Account.

Die c’t App auf dem iPad dagegen verwendet für einzelne Ausgaben einzelne Nicht-Verbrauchsgüter, die (theoretisch) über den Wiederherstellungsmodus oder über erneuten kostenlosen Kauf auf anderen Geräten heruntergeladen werden könnten.

Neue In-App-Abos

autorenewingDie neuen verlängernden In-App-Abos ähneln zunächst wider Erwarten den Nicht-Verbrauchsgütern, mit dem Unterschied, dass sie beim Überschreiten des bezahlten Zeitraums automatisch Geld abbuchen.

Für Entwickler verhalten sich die neuen Abos wie alle anderen Käufe auch. Deswegen konnten sie auch ohne spezifische Änderungen an iOS 4.2 (speziell: StoreKit) rein auf dem App Store Server implementiert werden. Nur auf dem Server des Anbieters ist eine kleine Änderung (Shared Secret für Quittungsverifizierung) nötig.

In most cases, your iOS client application should not need to change. In fact, your client application is now made simpler, as you can use the same code to recover auto-renewable subscriptions as you do to recover nonconsumable products.

StoreKit Reference

Ein Beispiel

Ich kaufe mir “The Daily” für einen Monat. Die App erhält nach Eingabe von iTunes-Account und Passwort eine Quittung vom App Store und schickt diese an den eigenen Server. Dieser überprüft die Quittung an der App vorbei beim App Store-Server, notiert sich die neue Laufzeit und schaltet den Inhalt für den Kunden in der App frei.

Wenn ich auf einem weiteren Gerät die App installiere, und mich mit dem gleichen Account anmelde, erhält die App beim Wiederherstellen der Transaktionen eine Kopie der Kaufquittung vom ersten Gerät, und kann den Inhalt für das zweite Gerät freischalten.

Sobald der Monat verstreicht, bucht mir Apple das Geld für den nächsten Monat ab. Die App weiß nichts davon, und Server von “The Daily” auch nicht. Solange, bis die App auf einem der Geräte wieder geöffnet wird. Dann werden die Transaktionen wiederhergestellt und der App Store schickt neue Kaufquittung(en) an die App. Diese schickt sie dann an den Server des Anbieters, der sie dann wieder bei Apple verifizieren kann und wieder den Inhalt freischalten kann. Bei jedem weiteren Gerät funktioniert das analog.

Das heißt, für das Abo laufen zwei unterschiedliche Uhren. Eine bei Apple im App Store, und eine in der App bzw. auf dem Server des Anbieters. Diese beiden Uhren werden erst beim Start der App und dem Wiederherstellen der Transaktionen synchronisiert.

Neue und Alte Abos

Für Apps mit dem “alten” Abomodell mit einem eigenen Account auf dem Server des Anbieters bedeutet das: Ein Übergang auf die neuen Abos ist nur mit Einschränkungen möglich:

Ein Vermischen von Laufzeiten aus dem “alten” Account auf dem Anbieter-Server und neuen Abos ist nicht möglich. Die angezeigten Laufzeiten im App Store und im Web könnten unkontrollierbar durch gemischte Käufe auseinanderlaufen.

Falls ein Vergeben eines externen Accounts für neue Abos noch zulässig sein sollte (ich habe eine entsprechende Passage in den Vertragsbedingungen noch nicht gefunden), kann die Situation entstehen, dass der Kunde automatisch bezahlt, aber die App nicht öffnet. Die Abo-Uhren würden nicht synchronisiert und der Inhalt wäre für den Account nicht freigeschaltet, bis der Benutzer einmal pro Abolaufzeit die App öffnet. Update: Geht doch.

Für die Bits und so App bedeutet das mit dem heutigen Wissensstand: Ein einfaches Umsteigen auf das neue Abomodell ist nicht möglich. Ein gemischtes Verlängern via Web-Shop und In-App-Abo wäre nicht möglich, und der Plus-Feed in iTunes auf Mac/PC würde auslaufen, wenn die App nicht geöffnet würde. Ein reines App-Plus-Abo ist zwar denkbar, wäre aber durch das Wegfallen des iTunes-Plus-Feeds eingeschränkt.

Die App entspricht zum Glück den verschärften, bzw. jetzt durchgesetzten In-App-Regeln: Die Käufe, die im Web angeboten werden, werden zu den gleichen Preisen auch in der App angeboten, und die App linkt nicht in den Web-Shop. Sie sollte damit auch über den Juni hinaus bedenkenlos das Bergwerk passieren.

TL; DR

Ganz abgesehen von der 30%-Diskussion, die die Verleger von toten Bäumen™ gerade mit sich selbst führen, ist das neue Abomodell von Apple unüberraschenderweise App-zentrisch und sieht einen Mischbetrieb mit eigenen, extern abgeschlossenen Abos mit Laufzeit nicht vor.

Update: War etwas voreilig – Die Subscriptions sind von außen überprüfbar. Vielleicht doch alles gar nicht so übel?

25.12.2010 / Timo Hetzel

Undsoversity-Feiertags-Ausverkauf

Wer brav war, hat wohl gestern abend ein neues iPad oder einen neuen Mac geschenkt bekommen. Oder seine Verwandtschaft mit neuem Spielzeug versorgt.

Passend zum neuen Gadget gibt es über die Feiertage die beiden Workshops

zum Preis von je 9,99€ statt 24,99€. Die Workshops können im Web gekauft und dann per iTunes für Mac oder PC DRM-frei heruntergeladen werden. Oder direkt in der Undsoversity-App für iPhone, iPod touch oder iPad mit iTunes-Guthaben gekauft werden.

8.12.2010 / Timo Hetzel

Die Bits und so App

Mit der Bits und so App kommt die Sendung endlich direkt dorthin, wo sie sich am wohlsten fühlt: Ins Innere des iPhones.

Die App kann direkt nach der Veröffentlichung einer neuen Folge den Download starten, ohne auf die Aktualisierung des iTunes Stores warten zu müssen.
Die Größenbeschränkung wie im iTunes Store von 20MB für den Download über 3G gilt hier nicht. Dann kann auch ohne Netzverbindung gehört werden.

Die App zeigt die letzten 10 Folgen an, und archiviert alle heruntergeladenen Sendungen permanent auf dem iPhone. Die Shownotes können inklusive aller Links direkt in der App angesehen und durchgesurft werden.

Das Audio der Sendung läuft auch im Hintergrund weiter und kann über die iPhone-Fernbedienung oder die Wiedergabesteuerung im Sperrbildschirm oder im Multitasking-Switcher gestartet und pausiert werden.

Push-Benachrichtigungen kündigen auf Wunsch neue Folgen und/oder Termine für die Live-Sendungen an.

Plus-Mitglieder können zusätzlich ohne lästige Passworteingabe auf die Live-Streams zugreifen und die einzelnen Themen innerhalb der Sendung mit Kapitelmarken anspringen. Außerdem wird die Plus-Version der Sendung geladen, mit besserer AAC-Audio-Qualität und der Pre- und Postshow.

Noch kein Plus-Mitglied? In der App kann eine neue Plus-Mitgliedschaft abgeschlossen werden, oder eine bestehende Mitgliedschaft genutzt und verlängert werden. Dafür kann der bestehende iTunes-Account aus dem normalen App Store genutzt werden.

Feedback zur App im Bits und so Forum, oder an shop (á) bitsundso.de für Fragen zur Plus-Mitgliedschaft.

Die App ist jetzt im App Store für 3,99€ erhältlich.

2.12.2010 / Timo Hetzel

Bits und so – Das T-Shirt

bitsundso-tshirtIm Winter ist es besonders unpraktisch, nackt und unglücklich durch die Gegend zu laufen.

Im Undsoversum Shop bei Bits und so gibt es in der Weihnachtszeit das offizielle Bits und so-T-Shirt zusammen mit Bits und so Plus zu kaufen.

Ladies! Eine winzigkleine Menge an Damen-T-Shirts gibt es diesesmal auch. Macht glücklich und nicht nackt.

Wir verschicken an jedem Werktag bis Weihnachten täglich die Bestellungen, portofrei innerhalb von Europa. Schnellschnell, denn die Auflage ist limitiert.

27.10.2010 / Timo Hetzel

Bits und so #200 – Rückblick

Bits und so 200 – Live in München

Am Freitag, den 22. Oktober 2010 haben wir unsere 200. Folge von Bits und so live für euch aus dem Oberangertheater am Sendlinger Tor in München übertragen. Knapp 300 von euch waren vor Ort dabei. Gegen 18.30 Uhr ging es vor einem voll besetzen Theater los.

Seit heute morgen ist die geschnittene Version der Sendung online, mit Bits und so Plus könnt ihr das Video inklusive Pre- und Postshow in HD herunterladen.

Fotos

#bus200 auf Twitter

Eine kleine Auswahl:

  • @hipcheck: Danke @timohetzel, @iphoneblog, @hessi, @monkeydom und @kyriii für ein großartiges #bus200.
  • @timpritlove: Lustiger Abend bei Bits und so 200. Überraschend viele CRE/MM/NSFW Hörer und viel nettes Feedback. Jetzt mal wieder runterfahren. #bus200
  • @mxxxa: So. #bus200 war super. Hat sich gelohnt. Besser als jedes Kabarett.
  • @HvdLinde: Gestern Abend großes Podcast Kino! #bus200 DANKE @bitsundso
  • @fuso82: @monkeydom war ne Bombenveranstaltung. Sowas darf mal wieder passieren! #bus200
  • @gromic: @timohetzel Danke auch an Euch und again Respekt vor Eurem Mut und Durchhaltevermögen!!! #bus200
  • @ZweiPunkNull: 5 Menschen sitzen mit ihren Laptops und Mikrofonen auf einer Bühne und 300 Leute + das halbe Internet gucken ihnen dabei zu. Toll! #bus200

Live-Streams

Das Live-Signal wurde auf Boinx TV produziert. Die drei Sony HDV-Kameras hingen über Firewire-Extender mit CAT5-Kabeln am Mac Pro. Wie es von dort aus weiterverarbeitet wurde, hat Thorsten aufgeschrieben.

Der HTTP-Live-Stream wurde über Amazon CloudFront ausgeliefert. Dabei sind etwa 1TB Datenvolumen und über eine Million Hits auf Segmente angefallen. Die Kosten dafür: etwa 100 Euro. Grob überschlagen schätzen wir daraus etwa 1.500 Zuschauer auf HTTP Live, dazu kamen die Flash-Zuschauer auf UStream und Justin.tv – stichprobenartig etwa 500. Im Schnitt dürften über die Dauer der Sendung also rund 2.000 Zuschauer dabei gewesen sein.

Postproduktion

Von AFK TV kamen 12 HDV-Bänder und eine Kamera. 12 Stunden später waren die dann auch auf der Platte. Nachdem wir nur mit Prosumer-Equipment gearbeitet hatten, gab es keinen eindeutigen Timecode auf den Bändern. Den muss man sich dann selbst generieren. Und das geht so:

fcp_timeline
Auf einer Master-Timeline werden die Clips der Bänder der einzelnen Kameras anhand der Master-Spur (dem Audio vom Festplatten-Rekorder) arrangiert, und pro Spur in Reference Files ausgespielt. Die sind klein und handlich, und werden mit einem neuen, synchron zum Audio laufenden Timecode versehen (starten bei 01:00:00:00).

Mit diesen kann man sich dann an einen Multiclip Edit wagen. Eine Kamera bekommt eine Referenz-Audiospur angeklebt, diese Audiospur bleibt fix und ungeschnitten. Die Kamerawinkel können dann in Echtzeit im Viewer angesesehen werden und in die Timeline geschnitten werden. Dafür kann man sich einfach die Tasten 1, 2 und 3 im Ziffernblock entsprechend belegen. fcp_multicam

Aus diesen fertig geschnittenen Sequenzen können dann leicht die Plus-Version und die gekürzte SD-Version geschnitten werden, und wieder als HDV-Files ausgegeben werden.

Das Encoding in H.264 lief für HD über den Compressor von Apple, mit sehr moderaten 1200kbit/s für das Video. Nach acht Stunden zusammen auf einem i7 iMac und einem Achtkern-Mac Pro war das dann auch erledigt. Die SD-Version lief bei einer Constant Quality von 50% durch Handbrake, was im Durchschnitt auf etwa 380kbit/s herauslief.

Insgesamt war die Videoproduktion in vier Arbeitstagen erledigt. Mit etwas mehr Routine und einem bandlosen Workflow ließe sich das sicher noch etwas beschleunigen, erscheint aber in dieser Form nur für Spezial-Events sinnvoll. Wenn es schnell gehen muss, empfiehlt sich Boinx TV, um Minuten nach der Show ein fertiges Videofile in Händen zu halten. Oder iMovie 11, um schnell einen albernen Trailer (Download, 16MB) zu schnitzen.

Die Dateien werden über unser handgestricktes uCDN verteilt. Anfangs sind vor allem die Maschinen bei Host Europe etwas in die Knie gegangen. Sie haben damit ihr Schicksal besiegelt und sind gekündigt worden. Auch mit etwas größeren Dateien hält die Infrastruktur damit ganz gut, wir liegen hier bei 400 statt etwa 70 MB für eine Video- statt einer Audio-Folge.

21.10.2010 / Timo Hetzel

Bits und so #200 Streams

Live-Streams in HTTP Live- und Flash-Geschmacksrichtungen für alle gratis auf bitsundso.de/live.
Sendungsbeginn ist gegen 18.30h am Freitag, den 22. Oktober 2010 – vier Jahre und einen Tag nach der ersten Sendung.

10.09.2010 / Timo Hetzel

Tickets für Bits und so #200 Live aus München

Komm am 22. Oktober 2010 nach München und sei bei der Jubiläumssendung dabei!

Ticket-Vorbestellung auf bitsundso.de/bus200live ab 12. September, 15 Uhr.

Update: Das Gratiskontingent war in 10 Minuten ausverkauft. Die restlichen Tickets werden bei den Sponsoren verlost, und im Oktober in Bits und so. Vielen Dank an alle!