Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSDC2021 知られざる課金ステータス

ohayoukenchan
September 18, 2021
6.8k

iOSDC2021 知られざる課金ステータス

登壇で発表した内容です

ohayoukenchan

September 18, 2021
Tweet

Transcript

  1. iOSDC 2021
    知られざる課金ステータス
    2021/09/18(Sat) 14:10〜14:30 Track E
    コネヒト株式会社 高野建太 @ohayoukenchan

    View full-size slide

  2. はじめに
    本セッションの概要

    View full-size slide

  3. これからお話すること
    ・コネヒトとママリの紹介
    ・オファーのおさらい
    ・いろいろな課金ステータスでオファーを受けてみる
    ・まとめ

    View full-size slide

  4. このセッションのゴール
    ・オファーのことがちょっとワカル
     →ここで言うワカルとは…
    ①オファーを受けた後どのようなタイミングでオファーが切り替わるか
    ②複数のオファーを同時に受けたときの仕様がなんとなくワカル

    View full-size slide

  5. 自己紹介
    高野 建太 @ohayoukenchan
    所属: コネヒト株式会社
    経歴: to C向け事業会社を数社
    専門: iOSアプリ開発たまにフロントエンド

    View full-size slide

  6. コネヒトとママリの紹介
    会社概要と事業内容

    View full-size slide

  7. コネヒトのビジョン

    View full-size slide

  8. "家族" を取りまく様々な課題の解決を目指す、
    日本の中でもユニークなドメインを持つ会社です!

    View full-size slide

  9. コネヒトが取り組む4つの課題

    View full-size slide

  10. 主力事業 / プロダクト
    ママの一歩を支えるブランド ママリの運営

    View full-size slide

  11. ママ向けNo.1アプリ「ママリ」

    ・Q&Aコミュニティ
     →ママ同士で悩みを相談しあうQ&Aプラットフォーム
    ・メディア
     →育児に役立つコンテンツ(記事や動画)を毎日配信
    ・ママリプレミアム
     →人気順検索や限定記事などより便利に使える機能
    ※妊娠中〜2歳0ヶ⽉の⼦供を持つ⼥性1023⼈を対象とした調査より「現在使っているアプリ(妊娠・⼦育て系) をすべて教えてください」で第1位 (17年8⽉実施、調査協⼒:インテージ)
    本日お話する内容

    View full-size slide

  12. iOSアプリ直近の動き
    ・一部ユーザーに対してママリプレミアム1年無料の実装
    ・Bitrise移行 🚀
    ・Renovate導入 🚀
    ・🚧 HTTPClient刷新 (APIKit+Swift.decodable から URLSession+Swift.decodable+Combine)
    ・🚧 アーキテクチャ再考 RxSwift+MVVM から Combine + MVVMへ TCAも検討
    ・🚧 SwiftUI移行 ( Hosting Controllerだらけになりそうで検討中)

    View full-size slide

  13. iOSアプリ直近の動き
    ・一部ユーザーに対してママリプレミアム1年無料の実装
    ・Bitrise移行 🚀
    ・Renovate導入 🚀
    ・🚧 HTTPClient刷新 (APIKit+Swift.decodable から URLSession+Swift.decodable+Combine)
    ・🚧 アーキテクチャ再考 RxSwift+MVVM から Combine + MVVMへ TCAも検討
    ・🚧 SwiftUI移行 ( Hosting Controllerだらけになりそうで検討中)
    本題に移ります
    興味ある方あとでトークさせてください 😆

    View full-size slide

  14. お試しオファーと
    プロモーションオファー
    比較をさらっと

    View full-size slide

  15. お話しないこと
    オファーのタイプはお試しオファーとプロモーションオファーのみ
    ・オファーコードについては未検証
    各オファーの請求方法は無料のみ
    ・都度払い、前払いは未検証
    グレードの変更はクロスグレードのみ
    ・ダウングレード、アップグレードについては未検証

    View full-size slide

  16. 比較
    お試しオファー プロモーションオファー
    主な用途 新規サブスクリプション利用者の獲得
    既存のサブスクリプション利用者の維持
    と過去の利用者の再登録
    利用資格
    App内の
    新規サブスクリプション利用者
    App内の既存または
    過去のサブスクリプション利用者。
    利用の限度
    サブスクリプショングループごとに
    1件のお試しオファーを利用可能
    デベロッパはユーザーが何件まで
    オファーを利用できるか決定する
    オファーの限度
    サブスクリプションごと、
    地域ごとに、1件のオファー
    サブスクリプションごとに、
    10件のアクティブなオファー
    互換性(iOS) iOS 10以降 iOS 12.2以降
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/#providing-subscription-offers

    View full-size slide

  17. 知られざる課金ステータス
    オファーを受けた後どのようなタイミングでオファーが切り替わるか

    View full-size slide

  18. プロモーションオファーが
    課金前のサブスクリプションに紐づく場合

    View full-size slide

  19. プロモーションオファーが課金前のサブスクリプションに紐づく場合

    View full-size slide

  20. 1ヶ月無料
    1ヶ月自動契約更新
    最大
    13ヶ月
    課金前のサブスクリプション 適用後の無料期間
    プロモーションオファーが課金前のサブスクリプションに紐づく場合
    1年無料の
    プロモーションオファー
    適用するオファー
    お試しオファー無料期間中の場合

    View full-size slide

  21. 1ヶ月無料
    1ヶ月自動契約更新
    最大
    13ヶ月
    課金前の課金アイテム 適用後の無料期間
    1年無料の
    プロモーションオファー
    適用するオファー
    お試しオファー中の場合
    お試しオファー無料期間が終了してから
    プロモーションオファー無料期間が適用される
    プロモーションオファーが課金前のサブスクリプションに紐づく場合

    View full-size slide

  22. 1ヶ月無料(課金中)
    1ヶ月自動契約更新
    契約期間
    終了後
    12ヶ月無料
    課金前のサブスクリプション 適用後の無料期間
    1年無料の
    プロモーションオファー
    適用するオファー
    課金中の場合
    プロモーションオファーが課金前のサブスクリプションに紐づく場合

    View full-size slide

  23. 1ヶ月無料
    1ヶ月自動契約更新
    最大
    13ヶ月
    課金前のサブスクリプション 適用後の無料期間
    1年無料の
    プロモーションオファー
    適用するオファー
    お試しオファー中の場合
    課金中に使うと
    契約期間終了後に無料期間適用になる

    View full-size slide

  24. まとめ
    ・サブスクリプションにプロモーションオファーが紐付いている場合、
    ・お試しオファー無料期間中でなら、お試しオファーの無料期間終了後に、プ
    ロモーションオファーの無料期間が適用される
    ・課金中なら現在の契約期間終了後にプロモーションオファーの無料期間が適
    用される
    ・ユーザーに不利益はなさそうなのでそのままお知らせすればよさそう

    View full-size slide

  25. プロモーションオファーが
    課金前のサブスクリプションに紐づかない場合
    (契約期間が同じ場合)

    View full-size slide

  26. 例)1ヶ月自動継続課金のお試しオファーの
    無料期間中に
    別のサブスクリプションの1ヶ月自動継続課金のプロモー
    ションオファーを適応させるとどうなるの?
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  27. グレードと期間が同じ別のサブスクリプションに移行
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  28. クロスグレードが発生し、
    現在適用中のオファーは破棄され、
    新しいオファーが適応されます
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  29. クロスグレードが発生し、
    現在適応中のオファーは破棄され、
    新しいオファーが適応されます
    クロスグレードとは?
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  30. ユーザーが、同等のレベルのサブスクリプションに切
    り替えることを指します。サブスクリプションの期間
    が同じであれば、新しいサブスクリプションはただち
    に開始されます。期間が異なる場合は、新しいサブス
    クリプションは次回の更新日に有効になります。
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  31. ユーザーが、同等のレベルのサブスクリプションに切
    り替えることを指します。サブスクリプションの期間
    が同じであれば、新しいサブスクリプションはただち
    に開始されます。期間が異なる場合は、新しいサブス
    クリプションは次回の更新日に有効になります。
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  32. 同一グループ内でのグレードを示す
    この場合、サブスクリプションのグレードはすべて
    等しい
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  33. ユーザーが、同等のレベルのサブスクリプションに切
    り替えることを指します。サブスクリプションの期間
    が同じであれば、新しいサブスクリプションはただち
    に開始されます。期間が異なる場合は、新しいサブス
    クリプションは次回の更新日に有効になります。
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  34. 1ヶ月自動継続課金のお試しオファーの
    無料期間中に
    別のサブスクリプションの1ヶ月自動継続課金のプロモー
    ションオファーを適応させるとどうなるの?
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  35. グレードと期間が同じ別のサブスクリプションに移行
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  36. グレードと期間が同じ別のサブスクリプションに移行
    サブスクリプションが移行していて、
    グレードと期間が同じ場合
    現在の無料期間は即時破棄されます
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  37. 1年無料
    1ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    お試しオファー中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    プロモーショ
    ンオファー即
    時適応
    1年無料の
    プロモーションオファー
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  38. 1年無料
    1ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    お試しオファー中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    プロモーショ
    ンオファー即
    時適応
    1年無料の
    プロモーションオファー
    お試しオファーの無料期間はなくなります
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  39. 1ヶ月自動継続課金のお試しオファーの
    課金中に
    別のサブスクリプションの1ヶ月自動継続課金のプロモー
    ションオファーを適応させるとどうなるの?
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  40. 1年無料
    1ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    課金中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    課金期間は途
    中で終了して
    1年無料
    課金期間に応
    じて返金
    1年無料の
    プロモーションオファー
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  41. 1年無料
    1ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    課金中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    課金期間は途
    中で終了して
    1年無料
    課金期間に応
    じて返金
    1年無料の
    プロモーションオファー
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合
    返金?

    View full-size slide

  42. クロスグレード - App 内課金が同じ期間のものである場合、前の
    App 内課金から比例配分された金額は、元の支払い方法で返金され
    ます。新しい App 内課金は正規価格が請求され、ただちに有効に
    なります。お客様の更新日はクロスグレードを行った日に変更され
    ます。App 内課金が異なる期間のものである場合、クロスグレード
    は、カスタマーの次の更新日に有効になります。
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  43. まとめ
    ・同一グレードで、期間が同じサブスクリプションに移行する場合、クロスグ
    レードが発生する
    ・お試しオファー無料期間中の場合、お試しオファーの無料期間は破棄さ
    れる
    ・課金中の場合、契約途中だった差額が返金される(Appleの計算ロジック
    で)
    ・いずれの場合もプロモーションオファーが即適応となる
    ・お試しオファーでトライアル中のユーザーに注意が必要なパターン
    ・課金中のユーザーには返金される可能性をお知らせするパターン

    View full-size slide

  44. プロモーションオファーが
    課金前のサブスクリプションに紐づかない場合
    (契約期間が異なる場合)

    View full-size slide

  45. グレードは同じだが期間の異なるサブスクリプションに移行する場合
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  46. 7日間無料
    3ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    お試しオファー中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    7日+1年
    (最大)
    1年無料の
    プロモーションオファー
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  47. 7日間無料
    3ヶ月自動契約更新
    課金前のサブスクリプション 適用後の無料期間
    適用するオファー
    課金中の場合
    1ヶ月無料
    1ヶ月自動契約更新
    現在の契約期
    間終了後
    1年
    1年無料の
    プロモーションオファー
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  48. クロスグレード - App 内課金が同じ期間のものである場合、前の
    App 内課金から比例配分された金額は、元の支払い方法で返金され
    ます。新しい App 内課金は正規価格が請求され、ただちに有効に
    なります。お客様の更新日はクロスグレードを行った日に変更され
    ます。App 内課金が異なる期間のものである場合、クロスグレード
    は、カスタマーの次の更新日に有効になります。
    自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    再掲
    プロモーションオファーが課金前のサブスクリプションに紐づかない場合

    View full-size slide

  49. まとめ
    ・サブスクリプションの期間が異なる場合、クロスグレードは次回更新時に有
    効となる
    ・挙動としては、サブスクリプションにプロモーションオファーが紐付いてい
    る場合と同じ
    ・お試しオファーでトライアル期間中のユーザーに不利益は発生しない
    ・課金中のユーザーには契約期間終了まで無料期間にならないことをお知らせ
    する必要がありそう

    View full-size slide

  50. プロモーションオファー無料期間中に
    プロモーションオファーを適用させるとどうなるの?

    View full-size slide

  51. 自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    プロモーションオファーからプロモーションオファー
    同一サブスクリプション内で提供する想定

    View full-size slide

  52. プロモーションオファーからプロモーションオファー
    課金前のプロモーションオファーの無料期間は
    維持したまま、新しいプロモーションオファーは
    pending_renewal_infoに記録されます

    View full-size slide

  53. プロモーションオファーからプロモーションオファー
    課金前のプロモーションオファーの無料期間は
    維持したまま、新しいプロモーションオファーは
    pending_renewal_infoに記録されます
    ぺんでぃんぐりにゅーあるいんふぉ is 何?

    View full-size slide

  54. プロモーションオファーからプロモーションオファー
    レシート情報の一部です

    View full-size slide

  55. プロモーションオファーからプロモーションオファー
    pending_renewal_infoは配列で、各要素には
    product_idで識別される各自動更新サブスクリプ
    ションの保留中の更新情報が含まれています。保留中
    の更新とは、システムが将来的に予定している更新
    や、過去に何らかの理由で失敗した更新を指します。
    responseBody.Pending_renewal_info https://developer.apple.com/documentation/appstorereceipts/responsebody/pending_renewal_info

    View full-size slide

  56. 12ヶ月無料のプロモーションオ
    ファー(1ヶ月自動契約更新)
    12ヶ月無料のプロモーションオ
    ファー(1ヶ月自動契約更新)
    6ヶ月無料のプロモーションオ
    ファー(1ヶ月自動契約更新)
    現在の
    オファー終了後
    12ヶ月(予定)
    現在の
    オファー終了後
    6ヶ月(予定)
    課金前のサブスクリプション 適用するオファー 課金後の無料期間
    プロモーションオファーからプロモーションオファー

    View full-size slide

  57. まとめ
    ・サブスクリプションが同一の場合、次の無料期間はペンディングされる

    View full-size slide

  58. プロモーションオファー無料期間中に
    プロモーションオファーを適応させ、
    再度プロモーションオファーを適応させるとどうなるの?

    View full-size slide

  59. 自動更新サブスクリプション https://developer.apple.com/jp/app-store/subscriptions/
    ここで何度もオファー
    を提供する想定
    プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー

    View full-size slide

  60. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    6ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在のサブスクリプションオ
    ファー
    pending中のアイテム
    ペンディングされている状態でさらにオファー適応
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)

    View full-size slide

  61. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    6ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    pending中のアイテム
    こうなることを期待
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在のサブスクリプションオ
    ファー

    View full-size slide

  62. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    6ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    pending中のアイテム
    こうなることを期待
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在の無料期間と
    合わせて最大
    30ヶ月無料!!
    現在のサブスクリプションオ
    ファー

    View full-size slide

  63. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    6ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    pending中のアイテム
    こうなることを期待
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在の無料期間と
    合わせて最大
    30ヶ月無料!!
    現在のサブスクリプションオ
    ファー
    実際の挙動

    View full-size slide

  64. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在のサブスクリプションオ
    ファー
    pending中のアイテム
    ?!
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)

    View full-size slide

  65. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    12ヶ月無料期間中
    プロモーションオファー
    (1ヶ月自動契約更新)
    現在の課金状態 pending中のアイテム
    ?!
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)
    なにがおこったの?

    View full-size slide

  66. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    pending_renewal_info
    pending_renewal_infoの情報が入れ替わった
    6ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)

    View full-size slide

  67. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    pending_renewal_info
    pending_renewal_infoの情報が入れ替わった
    12ヶ月無料
    プロモーションオファー
    (1ヶ月自動契約更新)

    View full-size slide

  68. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    pending_renewal_info
    最新のものが適応され、古いものは破棄FIFOみたいなイメージ
    12ヶ月無料
    6ヶ月無料
    12ヶ月無料
    in
    out

    View full-size slide

  69. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    pending_renewal_info
    プロモーションオファーはスタック出来ると思っていた
    12ヶ月無料
    6ヶ月無料
    12ヶ月無料

    View full-size slide

  70. プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー
    pending_renewal_info
    プロモーションオファーはスタック出来ると思っていた
    12ヶ月無料
    6ヶ月無料
    12ヶ月無料

    View full-size slide

  71. pending_renewal_infoで保持できるオファーは1つのみ
    現在のオファーが請求イベントに入る前に
    複数のオファーを受け入れた場合
    時系列で最新のものがアクティブになる
    プロモーションオファーは1つのみアクティブ
    という解釈でよさそう(念の為サポートセンターに問い合わせました)
    プロモーションオファー無料期間中にプロモーションオファーを適応させ、
    再度プロモーションオファー

    View full-size slide

  72. まとめ
    ・プロモーションオファーは開発者の設計次第で何度でも適用出来る。ユーザー体
    験を調整するにはレシート情報を見て適切に振り分けること
    ・プロモーションオファーはスタックされない、FIFOのイメージを忘れずに
    ・プロモーションオファーは容量用法を守って適切なご利用を
    ・現在ペンディング中のオファーを持つユーザーには、オファーを喪失することを
    お知らせする必要がありそう

    View full-size slide

  73. まとめ おぶ まとめ
    ・同一サブスクリプションのプロモーションオファーを適用する場合
    お試しオファー無料中の場合、お試しオファー終了後にプロモーションオ
    ファー適用になる
    課金中の場合、契約期間終了後にプロモーションオファー適用になる

    View full-size slide

  74. まとめ おぶ まとめ
    ・別のサブスクリプション(期間が同じ)のプロモーションオファーを適用する場

    お試しオファー無料中の場合、お試しオファーは即終了しプロモーションオ
    ファーの無料期間になる
    課金中の場合、現在の契約は終了し、プロモーションオファーの無料期間にな
    る。そして契約期間の差額分返金される

    View full-size slide

  75. まとめ おぶ まとめ
    ・別のサブスクリプション(期間が異なる)のプロモーションオファーを適用する
    場合
    お試しオファー無料中の場合、お試しオファー終了後にプロモーションオ
    ファー適用になる
    課金中の場合、契約期間終了後にプロモーションオファー適用になる
    ・同一サブスクリプションのプロモーションオファーを適用する場合と同じ挙動

    View full-size slide

  76. まとめ おぶ まとめ
    ・プロモーションオファー無料期間中にプロモーションオファー
    - レシート情報のpending_renewal_infoに記録され、次回更新日に有効になる
    (予定)
    - pending_renewal_infoは常に最新のオファーしか記録しないので複数のプロ
    モーションオファーを適用待ちにできない

    View full-size slide

  77. まとめ おぶ まとめ
    ・プロモーションオファー無料期間中にプロモーションオファー
    - レシート情報のpending_renewal_infoに記録され、次回更新日に有効になる
    (予定)
    - pending_renewal_infoは常に最新のオファーしか記録しないので複数のプロ
    モーションオファーを適用待ちにできない
    ありがとうございました。

    View full-size slide

  78. 本番で検証するときのtips
    検証時に気づいたことなどのシェア

    View full-size slide

  79. 気づき(sandbox編)
    ・sandboxでの7日間は5分なので7日間無料状態で課金を試すときは鍛錬が
    必要
    ・sandboxアカウント名を短くしたり、事前に課金開始画面を開いておい
    たり。DBでレシート検証するユーザーの情報を事前に容易したり
    ・sandbox環境で何度やっても想定通り行かない日がある。(私は
    expire_dateを過ぎても全く更新されない地雷を踏みました)ダメな日は別の
    仕事したほうがいいかも。

    View full-size slide

  80. 気づき(レシート編)
    ・サーバー側で現在の自動継続課金の有効期限を、レシート内の一番未来の
    expire_date_msでソートして取得していたが、お試しオファー1年無料の後
    に、6ヶ月無料を適用させた場合、有効期限が6ヶ月後を想定しているのに対
    して、破棄された1年無料の有効期限を取得してしまっていた。サーバー側で
    保持した有効期限はクライアント側で表示ロジックの制御に使用していたの
    で、有効期限が異なり、ユーザーに適切な体験を提供できなくなりそうだっ
    た。最新のレシートの有効期限を取得することで回避

    View full-size slide