2016-12-09 12 views
8

私は少なくとも1ヶ月間ゲームをリリースするゲーム開発会社で働いています。真のファンのためには、私たちのゲームの購読を開始したいので、いつでもそれらを購入する必要はなく、(プラットフォーム上の)すべてのゲームをプレイすることができます。複数のアプリからのiOS自動更新購読の有効性確認

iOSのアイデアは、アプリ内自動再生可能な定期購入を使用することです。これは私たちがバックエンドに保管する領収書になります。バックエンドはこの領収書を検証して、ユーザーにサブスクリプションに関する情報をアプリに提供できます。 このシステムは、多くの問題を解決します:あなたは1つのゲームでサブスクリプションを取ることができ、好きな任意のデバイスですべてのゲームをプレイすることができます。

しかし今、私たちは問題に遭遇します:1ヶ月後、領収書はもはや有効ではありません。ユーザーがまだ有効なサブスクリプションを持っているかどうかをiTunesストアにチェックインする必要があります。

私の最初のアイデアは、最新の領収書を取得してこれを検証するために、「latest_receipt_info」フィールドを使用することでした。しかし、ドキュメンテーションに従って、この機能は、iOS 6領収書のためにのみ使用してください:

は「のみ自動再生可能 サブスクリプションのためにiOS用6スタイルのトランザクションの領収書を返しました。」

ソース: https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-

私は実際にはまだ私のbrandnew iOSの10レシートと、このフィールドを使用することができるにもかかわらず、私は、それが非推奨なので、それはそれを使用するためにスマートだとは思いません。

(別のソースは、あなたはもうそれを使うべきではありません伝える:https://forums.developer.apple.com/message/156580#156580

リンゴの助言ソリューションは、アプリでSKPaymentTransactionObserverを実装することです。最新の領収書が利用可能になると、これが取得され、バックエンドに送信されます。ただし、これは理想とはほど遠いですが、これはうまくいく可能性があります。

これは、最新の領収書を取得するためには、アプリケーションがアクティブでなければならないことを意味します。そして、私たちの場合、ユーザーはapp1でサブスクリプションを取ることができ、2,3日後にapp2,3,4をダウンロードすることは可能ですが、app1を再び使用することはありません。この場合、最新の領収書は絶対に取得されません(app1のオブザーバーのみが領収書にアクセスできるため)

この問題を解決するには、このサブスクリプションの領収書をサブスクリプショングループの任意のアプリケーションから取得できる必要があります。しかし、あなたは1つのだけのアプリからサブスクリプションにアクセスすることができますリンゴのサイト(https://developer.apple.com/app-store/subscriptions/)上の文書に従って、そしてあなたは、複数のアプリの事を自分で行う必要があります:

あなたは、複数のアプリケーションにアクセスするために、自動再生可能 サブスクリプションを提供することができますあなたのポートフォリオに各アプリは の自動再生可能なアプリ内購入を使用することが承認されていなければならず、 がApp Storeの同じデベロッパー名で公開されている必要があります。

iTunes Connectでは、複数のアプリ サブスクリプションで提供される各アプリで、自動更新可能なアプリ内購入を個別に設定する必要があります。これにより、ユーザーはどのアプリからでも購読できます。ユーザーが を複数回支払うのを避けるには、 のサブスクリプションオプションを表示する前に、 がアプリの1つのサブスクライバであることを確認する責任があります。これを行うには、アカウント の管理システムを維持することを検討してください。この管理システムでは、ユーザーが自分のビジネスでアカウントを作成して 各アプリにログインします。

私たちが望むことを行う方法はありますか?ユーザーは毎月購読を購入していたアプリに戻る必要はありませんか?

+1

私は私の答えを削除しました。しかし、レシートはiOS 6スタイルでなくても、「latest_receipt_info」は常にサブスクリプションに表示されます。何が起こっているのかわからない、それに頼ることもできないかもしれない。一つのことは明らかだ.Appleはサブスクリプションを検証することを混乱させる。 –

+0

Latest_receipt_infoは私が必要としているものですが、正式なアップルのデベロッパーフォーラムを含むいくつかのフォーラムでは、これは廃止予定になっているためこれ以上使用しないことに言及しています。しかし、...この廃止は100%確実ではなく、Appleはこれについて明確な回答を拒否しています。 –

答えて

1

最後のWWDCで私たちはStoreKitラボに行き、個人的にこれについてStoreKitエバンジェリストに尋ねました。 iTunesのvalidateReceiptエンドポイントによって返される 'latest_receipt_info'フィールドは、サブスクリプションが更新されたかどうかを確認するために使用すると想定されているものです。 これは近い将来廃止されるだろうされていませんが、彼らは、我々はに走った問題のいくつかを解決するため、いくつかのサーバー間通信を追加するための計画を持っているか:あなたのサーバーが通知を取得することができます

  1. validateReceiptエンドポイントによって返されたlatest_receipt_infoには、現在のものが期限切れになった後にサブスクリプションが更新されるかどうか、課金に問題があるかどうかなどの情報を提供するフィールドはほとんどありませんユーザーのクレジットカードなど。

出典:実際の領収書を確認した後に、それは単に間違っていたので、

WWDC 2017 Session 303 - What's new in StoreKit
WWDC 2017 Session 305 - Advanced StoreKit

+1

アップルでは、​​次の改善点をいくつかリリースしました:https://itunespartner.apple.com/en/apps/news/45333106 – Kqtr