2

アプリ内購入(自動更新)で商品を購入した後、サーバー上で API を打って購入情報を提供します。

API をヒットするために製品が新しくなったことを知るにはどうすればよいですか?

ユーザーがそのサブスクリプションをキャンセルした場合、それを知る方法は?

4

2 に答える 2

8

Swift 3:ユーザーがいつサブスクリプションをキャンセルしたかを検出するには、次のことを行う必要があります。

  1. アプリの領収書をダウンロードする
  2. 領収書を検証して、すべてのアプリ内購入とサブスクリプションの辞書を含む json を取得できるようにします
  3. これがサブスクリプション購入であり、それ以外の場合は他のアプリ内購入では利用できない場合、各レシート内にcancel_dateと呼ばれる辞書のフィールドがあります。これが nil の場合、キャンセルは発生していませんが、これにキャンセル日を含む値がある場合、キャンセルが発生し、Apple によると:

    キャンセル日 Appleカスタマーサポートによってキャンセルされた取引の場合、キャンセルの日時。

    キャンセルされた領収書は、購入が行われていない場合と同じように扱います。

次に、以下のリンクで、領収書内で使用できるすべてのフィールドについて説明します。

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

コード例:

// Create receipt request
 let receiptRefreshRequest = SKReceiptRefreshRequest()

// Get the receiptUrl from the main bundle
 let receiptUrl = Bundle.main().appStoreReceiptURL

 //If the receipt file exist on local device
 if (receiptUrl as NSURL?)?.checkResourceIsReachableAndReturnError(nil) == true{

            // Get the file as data
            let receipt: Data = try! Data(contentsOf: receiptUrl!)


  }

領収書をAppleサーバーに送信して、Appleが推奨するサーバーを使用して検証します。検証からコールバックを受け取った後、キャンセル日を確認します。

于 2016-08-10T23:22:32.673 に答える
1

Apple は、簡単なサブスクリプションの詳細を提供する iOS または REST API に組み込まれたものを提供していません。また、更新またはキャンセルに関してリッスンして応答できるコールバックもありません。Apple には、ユーザーのローカル レシートと iTunes Connect で生成された「共有シークレット」が与えられると、現在のサブスクリプション情報を含む、アプリのユーザーの購入履歴の JSON オブジェクトを返す API があります。 詳細については、このリンクを確認してください

于 2016-06-21T13:21:19.087 に答える