3

ホストされたコンテンツがある場合のアプリ購入フローの標準は次のとおりです。

  • 取引をする
  • トランザクションが「購入済み」状態になったら、SKDownload を取得してダウンロードを開始します。
  • ダウンロードが完了したら、トランザクションを「終了」と宣言できます。
  • これで問題ありません。購入したすべてのコンテンツを復元したいと想像してみてください。これは、アプリを削除して再インストールしたか、単に別のデバイスにインストールしたためです。さて、これは WWDC 2012 セッションでこの件について確認されています。すべての購入を復元すると、復元するコンテンツの完全なリストが表示されますが、おそらくそれらすべてをダウンロードする必要はありません。このような場合、ダウンロードするコンテンツの選択肢をユーザーに提供し、選択した製品の SKDownload をキューに入れる必要があります。ダウンロードが終了し、コンテンツが正常にインストールされたら、トランザクションの終了を宣言できます。セッション ビデオでは、ダウンロードが拒否されたり遅延したりした場合に何をすべきかが語られていませんでした。私の知る限り、SKDownload をどこかに保存して後で取得する方法はなく、iTunes に「この既に購入した製品の SKDownload をください」というようなことを要求する API はありません。したがって、私によると、このケースを回避するには2つのオプションがあります。

  • 購入していないものを再度復元するように依頼します。これはエレガントではありませんが、機能します
  • 手順を開始してから一時停止します。これは後で再開します。ただし、このソリューションにはいくつかの欠点があります。システムが SKDownload を管理する方法を制御できず、一定時間後にキャンセルされる可能性があります。私はこの解決策を試したことはありません。
  • 他の誰かがこの問題に直面し、より良い解決策を見つけましたか? Apple に機能強化のリクエストを開くのは理にかなっていますか?

    4

    1 に答える 1

    1

    私はいつもあなたが提案したようにそれを行い、購入したアイテムを「再購入」するだけで、通常の購入フローを通過します. ダウンロードが完了するまで、トランザクションを完了としてマークすることはできません。そのため、アプリを一時停止し、アプリを再起動したときにアプリが停止すると、キューがオフになり、ダウンロード ロジックが再び開始される購入を終了しようとします。アプリを開いて購入を完了すると、ユーザーが常にこのポップアップを表示するため、これはさらに面倒です。

    SKDownload のドキュメントには次のように書かれています。

    アプリが SKDownload オブジェクトを直接作成することはありません。代わりに、支払いが処理された後、アプリはトランザクション オブジェクトの downloads プロパティを読み取り、トランザクションに関連付けられた SKDownload オブジェクトの配列を取得します。

    于 2013-07-26T07:00:23.970 に答える