こんにちは!
最近暑いのでビール最高と感じている新事業創造部バックエンドエンジニアのりほやんです。
今回はAppleが提供しているお試し価格の機能のひとつである無料トライアル機能を紹介します。
お試し価格とは
お試し価格とは自動更新の定期購読に対して割引価格を設定したり、定期購読の開始時に一定の無料トライアル期間を設けることができる機能です。
お試し価格には都度払い、前払い、無料トライアルの3種類があります。
お試し価格はユーザーにとって、有料会員の体験ができるとても便利な機能です。
しかし公式ドキュメント以外の資料が少なく実装に何点か困ったことがありました。
そこで今回はお試し価格の無料トライアル機能を導入する方法についてご紹介します。
この記事が無料トライアルを導入しようか悩んでいる方、実際に無料トライアルを導入する方のお役に立てば幸いです。
本記事では、課金機能自体の実装の説明は行いません。
自動更新の定期購読のサーバーサイド実装については、こちらの記事を参考になります。
tech.starttoday-tech.com tech.starttoday-tech.com
無料トライアルとは
無料トライアル機能について公式サイトには下記のように説明されています。
一定期間無料で定期購読を利用できるようにする方法です。定期購読はすぐに開始されますが、無料トライアル期間が終了するまで請求が行われることはありません。定期購読を試してもらいながら、請求が発生する前にキャンセルすることもできるようにする場合に効果的です。
この機能は通常と同じフローで課金処理が行われますが、実際にユーザーにはお金が請求されません。
無料トライアル指定できる日数は『3日・1週間・2週間・1か月・2か月・3か月・6か月・1年』の8種類です。
注意する点
お試し価格の対象ユーザーは一度もお試し価格を利用したことが無いユーザーです。
そのため現在課金中のユーザーも、無料トライアルを利用したことが無いユーザーは再課金時に無料トライアルを利用できます。
適用の条件を図にするとこのようになります。
またフローチャートで表すと下記のようになります。
既に課金機能をリリース済みのサービスに対して無料トライアル機能を追加する場合は、再課金時に無料トライアル適用されるユーザーと適用されないユーザーがいることに注意してください。
実際に適用してみる
無料トライアルを実際に適用する場合は以下の2つの作業を行う必要があります。
- iTunes Connect上で無料トライアルを適用する
- アプリケーション側で、購入レシートから無料トライアルかどうかを判断する
『アプリケーション側で、購入レシートから無料トライアルかどうかを判断する』処理については、再課金時に無料トライアルの適用対象かを判断する場合に用います。
無料トライアルを利用したユーザーが課金を終了し再課金した場合はお試し価格が適用されないため、無料トライアル機能へ誘導することはできません。
このような表示の出し分けに使用することもできるため、ユーザーが無料トライアルを利用したことがあるかどうかの情報はDB上に保存することをおすすめします。
iTunes Connect上で無料トライアルを適用する
iTunes Connect上で無料トライアル機能を適用します。 お試し機能は課金アイテムごとに適用する必要があります。
1. iTunes Connectにログイン
iTunes Connectにアクセスし、 マイAppから無料トライアルを適用したいアプリのページに移動します。
2. 課金アイテムに移動
iTunes Connect上で無料トライアルを適用したい課金アイテムのページに移動します。
3. お試し価格を適用する
+ボタンをクリック
お試し価格を適用する地域を選びます。
特に指定がない場合は、『すべてのテリトリ』を選択します。
お試し価格の開始日と終了日を選択します。
開始日はお試し価格を開始させたい日です。すぐに始めたい場合はその当日を選択します。
終了日はお試し価格を終了させたい日です。特に決まっていない場合は『終了日なし』を選択します。
お試し価格のタイプを選択します。
今回は無料トライアルを行うため、無料トライアルを選択します。
また無料トライアルが行える期間を選択し、終了をクリックします。
保存ボタンを押します。
これで無料トライアルの設定ができました。
課金アイテム画面の登録価格から無料トライアルが適用されていることを確認してください。
注意点
iTunes Connect上で無料トライアルの設定を行う際に、注意すべきポイントがいくつかあったのでご紹介します。
適用されるまでのタイムラグ
サイト上で適用する際の文言は『いますぐ適用』と書いてありますが、実際に使ったところ設定反映までに30~40分のタイムラグがありました。
終了する際も同様に、30〜40分タイムラグがありました。
タイムラグがあることについてはどの資料にも記載されておらず、実装時にとても困りました。
実際に無料トライアル機能が適用されているか確認するには、課金画面を確認します。
下記の画面になっていれば無料トライアルが適用されています。
課金は1度しかされない
ユーザーは1つのアプリに対して、無料トライアルは1度しか適用されません。
課金アイテムが複数ある場合も、1度でも無料トライアルを利用したユーザーは違う課金アイテムを購入しても無料トライアルは適用されないため注意が必要です。
レシートから無料トライアルかどうかを判別する方法
次にAppleから取得するレシートから無料トライアルかどうかを判別する方法についてご紹介します。
Appleから取得する定期購読型のレシートは下記のようになっています。
{ "quantity": "1", "product_id": "monthly_paid_1", "transaction_id": "12345678901234", "original_transaction_id": "12345678901234", "purchase_date": "2000-01-01 00:00:00 Etc/GMT", "purchase_date_ms": "12345678901234", "purchase_date_pst": "2000-01-01 00:00:00 America/Los_Angeles", "original_purchase_date": "2001-01-01 00:00:00 Etc/GMT", "original_purchase_date_ms": "1234567890123415", "original_purchase_date_pst": "2001-01-01 00:00:00 America/Los_Angeles", "expires_date": "2001-01-01 00:00:00 Etc/GMT", "expires_date_ms": "12345678901234", "expires_date_pst": "2001-01-01 00:00:00 America/Los_Angeles", "web_order_line_item_id": "1234567890123456", "is_trial_period": "true" }
取得したレシートが、無料トライアル中かどうかを判定するためには、レシート内のis_trial_period
を確認します。
is_trial_period
がtrue
だった場合は、無料トライアルのレシートです。
また通常expires_date
は購入したプランの終了日になりますが、無料トライアルのレシートの場合expires_date
が無料トライアル終了日になっています。
お試し価格が終わった際のレシート
お試し価格期間後は下記の2パターンが存在します。
- 定期購読を継続する
- 無料トライアル中に定期購読をキャンセルする
定期購読を継続している場合
無料トライアル期間終了後に、is_trial_period
がfalse
のレシートが最新レシートとして取得できます。
{ "quantity": "1", "product_id": "monthly_paid_1", "transaction_id": "12345678901234", "original_transaction_id": "12345678901234", "purchase_date": "2000-01-01 00:00:00 Etc/GMT", "purchase_date_ms": "12345678901234", "purchase_date_pst": "2000-01-01 00:00:00 America/Los_Angeles", "original_purchase_date": "2001-01-01 00:00:00 Etc/GMT", "original_purchase_date_ms": "1234567890123415", "original_purchase_date_pst": "2001-01-01 00:00:00 America/Los_Angeles", "expires_date": "2001-01-01 00:00:00 Etc/GMT", "expires_date_ms": "12345678901234", "expires_date_pst": "2001-01-01 00:00:00 America/Los_Angeles", "web_order_line_item_id": "1234567890123456", "is_trial_period": "false" }
定期購読を継続している場合に取得するレシートは、下記のようになっています。
is_trial_period
がfalse
expires_date
が購入したプランの終了日
このような状態の場合は、ユーザーが継続課金をしているとみなします。
無料トライアル中に定期購読をキャンセル
無料トライアル中に定期購読をキャンセルした場合は、期間終了後にAppleからレシートが送られてこないことに注意してください。
こちら側でAppleにレシートを問い合わせる必要があります。
無料トライアル中に定期購読をキャンセルした場合、レシートは下記のような状態になります。
is_trial_period
がtrue
expires_date
が現在時刻より過去
このような状態の場合は、ユーザーが継続課金をキャンセルしたとみなします。
- 無料トライアル中
- 無料トライアル中に定期購読をキャンセルした場合
- 無料トライアル後に課金を継続した場合
それぞれの場合is_trial_period
とexpires_date
がどのような状態になるかをまとめると以下のようになります。
状態 | is_trial_period | expires_date |
---|---|---|
無料トライアル中 | true | 現在時刻より未来 |
無料トライアル中に定期購読をキャンセル | true | 現在時刻より過去 |
無料トライアル後に課金を継続 | false | 現在時刻より未来 |
注意する点
Sandbox環境で無料トライアル中のキャンセルができない
Sandbox環境で無料トライアルを適用した場合、必ず無料トライアル後課金が継続されます。
継続課金が何回続くかはランダムですが、無料トライアルだけで課金が終了することはありません。
そのため無料トライアル中にキャンセルした場合の検証が行えません。
まとめ
本記事ではiOSアプリのお試し価格の1つである無料トライアル機能についてご紹介しました。
無料トライアル機能はユーザーにとって、有料会員の体験ができるとても有用な機能です。
しかし実際に無料トライアル機能を適用する上で、公式ドキュメントに記載されていないことや注意すべきポイントがいくつかありました。
公式ドキュメント以外にほとんど資料がなかったため、本記事では無料トライアル機能についてまとめてみました。
無料トライアルの導入を検討している方、実際に導入する方のお役に立てば幸いです。
スタートトゥディテクノロジーズでは、一緒にサービスを作り上げてくれるエンジニアを大募集中です。
ご興味のある方は、以下のリンクからぜひご応募ください!
www.starttoday-tech.com starttoday-tech.connpass.com