2013年03月27日

今日の俺Twitter

In-App Purchaseするアプリは、Paymentをキューに入れるとき、購入処理待ち画面を出して、ユーザにトランザクション完了を待たせるべし。購入処理待ち状態は永続化しておくべし。もしトランザクションが未完了のままアプリがフォアグラウンドを離れたら、次回フォアグラウンド時にも購入処理待ち画面を引き続き出すべし。



……とAppleが言わないのが諸悪の根源じゃないかという気がしてきた。これ以外のシナリオはほとんど不可能なのに。


複数のPaymentをキューイングできる、というのもデベロッパのメンタルモデルを混乱させる。もしこのキューがなければ、購入処理待ち画面+永続化が結論だと簡単にわかる。このキューってなんのためにあるの? 単一のアプリのインスタンスが複数のスクリーン&ユーザを同時に相手にするシナリオ以外の、どんなシナリオで使われるの?


あー、きっとPaymentキューは1端末に1つなんだ。StoreKitは、個々のアプリの状態を管理しない。アプリの状態(複数)のかわりにPaymentキュー(単一)だけを管理する。そのほうがStoreKitの実装が簡単だし、未完了トランザクション(複数)との不整合も生じない。


自分の仕事を簡単にするのはいいよ。面倒にしてバグるほうが問題。が、推奨シナリオを提示しないのは本当にどうか。

Posted by hajime at 2013年03月27日 17:13
Backlinks
Comments
Post a comment









Remember personal info?