1

MacOSアプリケーションで自動的に更新可能な購読を持つStoreKitの機能を実装しようとしています。macOSサンドボックス環境で自動的に更新可能な購読を購入した後に領収書が更新されない

数十ページを読んで例を確認したところ、すべてがどのように適合しているのか理解していますが、正しく動作するようにはなりません。私がやろうとしています何

  1. をできるだけ早くアプリが起動すると、アクティブなサブスクリプションは、地元の領収書を評価することによって、利用可能であるかどうかを確認。私は、領収書のIn-App Purchase field entriesのいずれかでキャンセル日が利用できないことと、契約の有効期限が未来かどうかを具体的にチェックしています。
  2. (アクティブな)サブスクリプションが利用できない場合、私はStoreKitのAPIを使用してサブスクリプションを購入しています。

サブスクリプションを初めて購入したときにこのフローが完全に機能するため、どちらのシナリオもうまくいきます。ただし、購読の有効期限が切れた後、領収書は自動的に更新されません。私はこの領収書がAuto-renewing subscription and app receiptにも示されているように定期的に更新されることを期待しています。その結果、上記の最初のステップは失敗します。これは、ある時点の有効期限が履歴にあり、期限切れとみなされるためです。

2つのことは私が奇妙見つける:

  • マイSKPaymentTransactionObserverインスタンスは、唯一の(ユーザーが明示的にそれを購入した後)、サブスクリプションを購入した後に呼び出されます。サブスクリプションが期限切れになったときに呼び出されることはなく、自動的に更新する必要があります(上記のブログ記事を参照)。
    • SKReceiptRefreshRequest APIを使用して更新する私の領収書(IAPの有効期限を含む)を明示的に要求することは、その要求:didFailWithError:delegateメソッドを呼び出すことによって失敗します。エラーオブジェクトはnilなので、なぜ更新に失敗するのかわかりません。

私は、コードを共有することができますが、私はこれがないコードに関連している感がありますが、代わりに、私は完全には取得しないおよび/または動作を設定するプロジェクト/環境のいくつかの種類があります。

お試しいただきたいことはありますか?

答えて

0

数日間の実験の後、https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1に記載されているサーバー側の検証を使用するようにメカニズムを変更しました。明らかに、これはどこかで動作するWebサービスを必要とし、環境をより複雑にしますが、少なくとも物事はより安定した(安全な)方法で動作します。

関連する問題