ios11でプロモーションされたアプリ内購入をテストする方法 質問する

ios11でプロモーションされたアプリ内購入をテストする方法 質問する

Apple は iOS 11 で Promoted In-App Purchases を導入しました。新しい必須の SKPaymentTransactionObserver メソッド、paymentQueue:shouldAddStorePayment:for: を実装しましたが、アイテムの「購入」を正常にテストできませんでした。サンドボックス テスト環境でテストと購入を行えるようにする必要がありますか?

Apple は、次の形式の URL を通じてテストを開始することについて説明しています。

itms-services://?action=purchaseIntent&bundleId=com.example.app&productIdentifier=com.example.app.myIAP

自分宛のメールに URL を記載しました。URL をクリックすると、次のシーケンスが表示されます。

1) MyApp に切り替え、私の製品識別子 com.example.app.myIAP を持つ製品で shouldAddStorePayment が呼び出されます (開始を促す)

2) paymentQueue:shouldAddStorePayment:for: が true を返すようにします。

3) paymentQueue:updatedTransactions: が呼び出され、トランザクションは「購入中」(ただし購入されていない)状態です。transactionIdentifier は nil です。

4) サインインを求めるアラートが表示されます。サインインアラートの「購入」ボタンを押して、サンドボックス Apple ID でサインインします。

5) サインインを求める別のポップアップが表示されます。サンドボックス Apple ID でサインインし、サインイン アラートの「購入」ボタンを押します。

6) paymentQueue:updatedTransactions: が呼び出され、トランザクションは「失敗」状態になります。transactionIdentifier は nil 以外です。

shouldAddStorePayment ルーチンは何か追加の処理を実行する必要がありますか?

ベストアンサー1

上記のように限定的なテストを行った上でアプリを提出しました。そして、プロモーションされたアプリ内購入を実際に行うことができました。

しかし、ここでは鶏が先か卵が先かという状況です。アイテムがストアに追加されたので、ローカル/デバッグ ビルドを実行して App Store からテストすることができます。しかし、試行錯誤の過程で、サンドボックス ユーザー ID もいくつか使い果たしてしまったと思います。

以下は私が現在実行できるシーケンスです。

1) App Store にアクセスしてログアウトします。

2) アプリをビルド/実行し、サンドボックスのユーザー ID/パスワードでログインして「購入の復元」を使用します。

3) サンドボックス ユーザーが App Store にログインしていることを確認します (サンドボックス ユーザーで App Store に直接ログインしないでください。ログインすると、そのユーザーは機能しなくなります)。

4) アプリを見つけて、プロモーションされている機能がある「アプリ内購入」セクションを見つけます。プロモーションされているアプリ内購入機能を選択します。

5) アプリが読み込まれます。しばらくすると、次のアラートが表示されます: アプリ内購入の確認 ---- XXXX を $0.99 で購入しますか? --- [環境: サンドボックス] ---- キャンセル / 購入

6) 購入後、次のアラートが表示されます: 設定が完了しました。 ---- 購入に成功しました。 ---- [環境: サンドボックス] ---- OK

7) サンドボックス ユーザーが既に購入したアイテムに対してこれを行うと、次の警告が表示されます: 既に購入済みです。無料で再度入手しますか? ---- [環境: サンドボックス] ---- キャンセル / OK

上記のポイントは、実際の購入時に表示される領収書タイプの項目が下からポップアップするのではなく、前に見たようなアラート メッセージが表示されることです。

これが役に立つことを願いますが、初めてにしてはまだ良い答えではありません。

おすすめ記事