##はじめに
既存アプリの定期購読でaccount holdとrestoreの対応をする際に
リアルタイムデベロッパー通知でサーバー側の処理を行うように変更した。
通知が13種類あり、実機テストで送られてくる番号を確認した際に若干こちらの想定と違う番号が送られてきたりしたため、テストフローに沿って通知をメモしておく。
##テストシナリオ
テストのフローは公式に記載されている内容を参照。
更新頻度のテストシナリオ
####月次定期購入(新規定期購入→更新のテスト)
時刻 | ユーザーの操作 | システム イベント | 送られてくるnotificationType |
---|---|---|---|
午後 12:00 | ライセンス テスト アカウントと「テスト支払い方法 - 常に承認」を使用して、アプリ内定期購入に登録します。 | 定期購入が開始します。 | (4)SUBSCRIPTION_PURCHASED |
12:05 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:10 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:15 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:20 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:25 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:30 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:35 | 定期購入が終了します(6 回の更新後) | (3)SUBSCRIPTION_CANCELED (13)SUBSCRIPTION_EXPIRED | |
6回目の更新の時に通常だったらユーザーが定期購入を解約した時に送られる(3)が通知されてその後に有効期限切れの(13)が送られてきます。 |
####猶予期間なしの月間定期購入(アカウントの一時停止を含む)、ユーザーが再開した場合(新規定期購入→Account Hold→再開のテスト)
今回の実装では猶予期間は設定せずaccount hold(一時停止)のみ対応したので一時停止、再開のテスト。
時刻 | ユーザーの操作 | システム イベント | 送られてくるnotificationType |
---|---|---|---|
午後 12:00 | ライセンス テスト アカウントと「テスト支払い方法 - 常に承認」を使用して、アプリ内定期購入に登録します。 | 定期購入が開始します。 | (4)SUBSCRIPTION_PURCHASED |
12:01 | Google Play アプリの [アカウント] > [定期購入] に移動して、テスト用定期購入をクリックし、支払い方法を「テスト支払い方法 - 常に不承認」に変更します。 | ||
12:05 | お支払いが不承認となり、アカウントの一時停止が開始されます | (5)SUBSCRIPTION_ON_HOLD | |
12:15 | Google Play アプリの [アカウント] > [定期購入] に移動して、テスト用定期購入をクリックし、支払い方法を「テスト支払い方法 - 常に承認」に変更します。 | 定期購入が再開され、更新されて、アカウントの一時停止が終了します。 | (1)SUBSCRIPTION_RECOVERED |
12:20 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:25 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:30 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:35 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:40 | 定期購入が更新されます | (2)SUBSCRIPTION_RENEWED | |
12:45 | 定期購入が終了します(6 回の更新後) | (3)SUBSCRIPTION_CANCELED (13)SUBSCRIPTION_EXPIRED | |
カード不承認状態を更新した場合はすぐに一時停止状態から定期購読状態に戻るのでGoogle Playの操作で通知が来た。 |
####猶予期間なしの月間定期購入(アカウントの一時停止を含む)、ユーザーによる非自発的チャーンの場合(新規定期購入→Account Hold→期限切れのテスト)
account hold状態から更新をしなかった場合に期限切れになるテスト
時刻 | ユーザーの操作 | システム イベント | 送られてくるnotificationType |
---|---|---|---|
午後 12:00 | ライセンス テスト アカウントと「テスト支払い方法 - 常に承認」を使用して、アプリ内定期購入に登録します。 | 定期購入が開始します。 | (4)SUBSCRIPTION_PURCHASED |
12:01 | Google Play アプリの [アカウント] > [定期購入] に移動して、テスト用定期購入をクリックし、支払い方法を「テスト支払い方法 - 常に不承認」に変更します。 | ||
12:05 | お支払いが不承認となり、アカウントの一時停止が開始されます | (5)SUBSCRIPTION_ON_HOLD | |
12:15 | 非自発的チャーンにより定期購入が解約されます | (3)SUBSCRIPTION_CANCELED (13)SUBSCRIPTION_EXPIRED | |
アカウントの一時停止から解約までの時間は前後する模様。 |
##テストの注意点
- 定期購入を開始した直後に以前の定期購入の期限切れの通知(13)SUBSCRIPTION_EXPIREDが送られてくる。(既に有効期限切れの定期購入に再度期限切れの通知(13)が来ることがある点に注意)
- 定期購入が終了する時に(13)SUBSCRIPTION_EXPIREDが来てから(3)SUBSCRIPTION_CANCELEDが来ることがある((3)SUBSCRIPTION_CANCELEDで何かしらの処理がある場合は注意)
##おわりに
実機でのテストは時間がかかるから結構大変。でもGooglePlayの動きは実機で確認しないと想定外の事が起きそうなのでちゃんとやらないとね。
猶予期間(Grace Period)を導入するとさらにテストが大変そうなのでやった時に追記するかもしれない。