2022年7月18日月曜日

[Xcode13.3] 非消耗型アプリ内課金コンテンツのホスティングサービスの終了


序文


Appleから2月頃以下のようなメールがきた。普段はすぐ捨てるが、なんか引っかかるところがあったので、捨てないで置いておいた。

Title: Upcoming changes to hosting non-consumable in-app purchases.

We’re reaching out to let you know about upcoming changes to in-app purchase content hosting. In Xcode 13.3, we’ve removed the option to upload non-consumable in-app purchase assets for Apple to host. In addition, support for managing these assets in App Store Connect will be removed starting in April 2022.

Existing assets hosted by Apple won’t be affected and you’ll still be able to manage their associated in-app purchase details, such as pricing and availability, in App Store Connect.

Moving forward, we recommend taking advantage of on-demand resources to host in-app purchase assets on the App Store, separately from the app bundle. You can enable smaller app bundles, faster downloads, and richer content.

最近久々に、アプリの更新をしてみたところ、このお知らせの意味する重大な問題にやっと気づいたので、これを解説したい。

何ができなくなるのか


私がリリースしている「学区ビューア」というアプリでは、GIS情報がデカすぎる等の理由から、アプリに内包(バンドル)せず、後からダウンロードできるようにしている。
今まではApple Store Connectを利用して、Appleが用意したサーバーにアップロードできていたわけだが、どうもこのサービスをやめたいらしい。
正確には、新規登録は受け付けない、既存の更新は許すが、アップロードしたいなら13.2以前のXcodeを使うか、別な手段(コマンドライン)でやりなさいということらしい。

私の例でいうとXcode13.2では、


のような画面を拝めたが、13.3以降では機能がなくなったので、プロジェクトをロードした時点でエラーとなる。

代替手段はあるのか


Apple Developer Forums
で議論されている。

Appleの中の人は、ODA(オンデマンドリソース)とやらを利用せよというが、


ODAは概念であって、非消耗型アプリ内課金コンテンツに対して、新しい置き場所が用意されたわけではないようだ。
実際、ODAのドキュメントには「Cloud or Apple Store」と記載されており、今後Apple Storeを利用できないとなると、Cloudしか残らない。
そしてCloudとは何かというと、要は自分でサーバーを用意せいっということらしい。
少なくとも私はそう読み取った。

外部サーバーへの接続、外部コンテンツの取得は、初期の頃はガイドライン的にNGだったはずだが、大手デベロッパーから押されてAppleも徐々に方針転換。
大手は大歓迎だろうが、個人が証明書類が揃ったサーバーを用意してまで、アプリのコンテンツを配信するのかと問われると、それは厳しいとしか言いようがない。