Ionic2で開発した携帯アプリがAndroid版はGoogle Playで無事リリースできたのに、iOS版がiTunes審査で跳ねられるという事態となりました。GoogleとAppleではIn-App-Purchaseを必要とする状況が若干異なるようです。Stripeのようなサードパーティー決済を検討されている人は注意してください。
背景
- 小生のブログで紹介しているMyFavNationsというアプリの話です。
- 206カ国・地域の国旗を比較して、好きなほうをタップするというアプリです。
- 206カ国もあると、応援したい国の国旗はなかなか表示されません。
- そこで応援したい国の旗の出現確率を高くすることができるようにしました。
- この仕組みがIn-App-Purchase(アプリ内課金)の対象となるのか否かでGoogleとAppleの見解が異なりました
具体的な建付け
アプリ内課金を避けるために以下のような建付けを考え、実装しました。
- 応援したい国の「e-Karma」を購入することで、当該国が二択に選ばれる確率を一定期間あげられるようにする。
- e-Karmaは当該国の出現確率を上げるためのチケットである。
- よってアプリ内課金を使う必要はない。
そして完成したアプリをGoogle/Appleそれぞれに登録したのですが...
Google Playでは...
- あっさり承認
Apple App Storeでは...
- 却下
- Apple側担当者によって説明がブレるが、e-Karmaはアプリ内アイテム、というのが骨子
- 従って、アプリ内課金を使え
というのがApple側の見解みたいです。
Stripe決済はIonicフレームワークとの相性も良く、商品/サービスのマスタ登録もStripe側で一回実行すればAndroid/iPhone両方で使いまわせます。またStripeが持っていく手数料も%2.9%+30セントと魅力的な設定です。しかし、上述のように物理的製品の購入やアプリに直接影響を与えないサービスの購入を伴わない限り、Apple側で拒否される可能性は高いということがわかりました。
今回のような場合は面倒でもApple/Google両方で商品/サービスマスタを登録した上で、Ionic-NativeのIn-App-Paymentプラグインを使って課金すべきです。ただし手数料は結構高いので頭が痛いところではあります。
あと、Appleのアプリ審査担当から「あまりしつこく食い下がると、今後のアプリ審査が常に厳しくなるよ」、という警告をいただきました。以後気を付けます。