目的・役割

プレミアム会員の特典を訴求し、月額・年額プランから選択して StoreKit 経由で購入してもらう画面。 PaywallView を中心に Header / Plan / Purchase / Benefits / Footer の5つのサブViewで構成。

UI 構成(サブView)

サブView役割
PaywallHeaderViewキャッチコピー・アイキャッチ画像
PaywallBenefitsView特典リスト(広告非表示・ポイント増量・無料作成枠拡大 等)
PaywallPlanSelectionView月額/年額のプラン選択(ボタンスタイル)
PaywallPurchaseButton購入実行ボタン(StoreKit起動)
PaywallFooterView利用規約・プライバシーポリシー・「購入を復元」リンク

提供商品

プランProduct ID
月額com.happyboy1002.RankingStadium.premium.monthly
年額com.happyboy1002.RankingStadium.premium.yearly

状態

状態表示内容
商品取得中ProgressView
商品取得完了プラン選択UI表示
購入処理中ボタン無効化 + ProgressView
購入成功「ようこそプレミアム会員へ」表示 → 戻る
購入失敗エラーアラート
すでにプレミアム「すでにプレミアム会員です」表示

遷移

操作遷移先
プラン選択 + 購入ボタンStoreKit 購入フロー
復元ボタンStoreKitService.restorePurchases()
利用規約・プライバシーSafariView で表示
戻るSettingsView

使用するデータモデル

StoreKitService {
    var products: [Product]                // 月額・年額
    var purchasedProductIDs: Set
    var isPremium: Bool
    func purchase(_ product: Product) async throws
    func restorePurchases() async throws
}

実装メモ

関連

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成