はじめに
本記事は with Advent Calendar 2021 16日目の記事です。
こんにちは withで iOSエンジニアをしている増田です。
以前、弊社の with iOSアプリにて Auto-Renewable Subscription(自動更新サブスクリプション)の値上げを行いました。
実際対応は簡単ですが、細かい情報が探し辛く想定と違う仕様があったりもして不安になる事が多かったので、いろいろ書いておきます。
所感としては、良い意味でも悪い意味でも神が全ていい感じにやってくれるので、やらねばならない事が全然無い一方、やれる事も無い。
正しく課金商品の実装が出来ていれば、何も問題は起こりません。
実際の手順は既にわかりやすい記事を書いてくれている方がいるので、本記事では不安になる点や気をつけたほうがいい点についての備忘録のような内容になります。
対応した内容
- 1ヶ月プランの価格を 3400円 -> 3900円に値上げ
- 価格変更の際に、現在契約中のユーザはそのまま価格を据え置きする
- ただし、現在の契約を一旦停止した後で、再契約した場合は新価格にする
実際やった事
- iTunesConnectの管理画面上で、価格変更の予約を設定する
- 以上!
知っておきたい事
既存ユーザに対する値上げ方法の種類
現在契約中のユーザに対する値上げの方法は2種類の手段から選ぶ事が出来ます。
- 次回の自動更新支払い時から値上げする。この場合、ユーザに Appleからメールと Pushで通知され、同意があれば契約継続されるが、応答が無かったり同意がなければ契約継続は打ち切られる
- 現在契約中のユーザは自動更新を継続する限りそのまま価格を据え置きする。一度自動更新をやめた場合、次回からの課金時には新価格が適用される
この度、withでは後者の方法を採用しました。
気をつけた方が良い点
事前に価格変更の動作テストをする事は出来ない
以下、 の人に質問した時の返事
App 内課金の購入が問題なくできるかは Sandbox でテストが可能となっておりますが、価格変更の動作確認に関しましては Sandbox または TestFlgith などをご利用いただき、テストを行う事もいたし兼ねます旨、何卒ご理解賜りますよう、お願いいたします。
withではリリースしないテスト環境用のアプリを別途 AppStoreConnect上に登録してあるので、こちらで価格変更の設定をする事で試せる・・・? と思いきや、審査承認済みでない課金商品は再設定
する事は可能ですが価格変更
は出来ませんでした😇
単純に課金商品を別価格で登録しなおす事で、課金ボタン上等の提示価格が想定と違うものになっていないかのテストは可能なので、せめてもの確認として行っておきましょう。
変更日の予約が出来るが・・・
正確な価格変更時刻は決まっておらず、ユーザ個別で異なる
予約出来るのは日付だけで、何時何分という時刻は設定出来ません。
実際の結果としては、当日朝には価格が変わっているアカウントもあったし、16時頃にやっと変わったアカウントもありました。
さらに課金履歴のログを見てもらった所、前日の23時から新価格で契約されたものもあった模様です。
つまり、ユーザに価格変更の正確な時刻を事前にアナウンスはする事は出来ませんし、予定日よりも早く変わってしまう可能性もあります。
ユーザに不利益を与えない事を最優先するのなら、AppStoreConnect上での価格変更設定日を実際の予定日の次の日としておく選択も有り得ると思います。
今日を価格変更日には出来ない
あくまで予約という事で、未来の日付を予約日として設定する事は出来ますが、価格を変えたい当日に価格を変更するように設定することは出来ません。
保存
を押さないと予約が完了しない
これは本当はあえて書くような内容ではないのかもしれないですが、実際に私が嵌ったので書いておきます😅
価格変更の予約の操作を終えると、価格変更
の欄にそれが追加されるので、それを見て予約が出来たと思ってしまうかもしれませんが、実際は右上の保存
ボタンを押さないと完了しません。
設定後は実際に登録されているのかを確実に確認する為に、AppStoreConnectのトップから
マイ App
> 対象のアプリ
> App内課金
> 対象の課金商品
> サブスクリプション価格の変更を計画
と開き直し、予定した価格変更が登録されているのかを確認しておきましょう。
私は価格変更日の直前に登録されていない事に気づいて非常に焦りました😇
事前に確認出来る事
上記のような状況により、事前に確認出来そうな対応は以下のようなものに限られます。
- 価格に関するものでアプリのリソースに、画像・テキスト等でハードコードされたものが無いことを確認
- 価格に関するもので自社APIから取得した値で、価格等を表示していないことを確認
- テスト環境用の別アプリがあるのなら、そちらで課金商品を別価格で登録しなおして、課金ボタン上等の提示価格が想定と違うものになっていないことを確認
- AppStoreConnect上で予約した価格変更の設定がちゃんと登録されている事を確認
つまる所、課金商品の実装を行う上で当然やっているべき事が正しく出来ていれば良いという事ですね。