Skip to content

Pro の購入時に Sign in with Apple を必須にする #116

Description

@bannzai

背景

#90 の商品設計 ( #90 (comment) ) で、「Sign in with Apple は Pro 購入時に必須にする (2 台目の追加には Pro が要るため、購入時の 1 回で足りる)。無料は匿名のまま使える」と決めた。

PR #113 (#106) で Sign in with Apple の導線とアカウントの統合は入ったが、Pro 購入時の必須化は #106 の完了条件に無かったため入っていない。今は匿名のままでも Pro を購入できる。

完了条件

購入導線

  • ペイウォールで購入ボタンを押した時、アカウントに Apple の認証情報がリンクされていなければ、購入を始める前に Sign in with Apple を求める。サインインが完了したら、そのまま購入に進む。シートを閉じた時は購入しない
  • 判定と Sign in with Apple の実行は既存の AccountSession の仕組み (completeSignInWithApple・appleIDLinked) を使い、2 本目のサインイン処理を作らない。PaywallPage.purchaseBlockedMessage と同じく、購入を始める前の確認として組み込む
  • サインインで既存の Apple アカウントへ統合され、統合先が既に Pro だった場合は購入に進まず、Pro が有効であることを表示してペイウォールを閉じる (二重購入を防ぐ)
  • 購入の復元 (restorePurchases) は必須にしない。匿名のまま復元した購入は、後で Sign in with Apple した時に PR Sign in with Apple の導線を追加し、複数端末を 1 つのアカウントにまとめられるようにする #113 の syncPurchases で Apple 側の uid へ移るため
  • 既に匿名のまま Pro を購入済みのユーザーには、サインインを強制しない (購入時だけの確認にする)
  • ペイウォールに「Pro の購入には Sign in with Apple が必要」と分かる文言を置く。メールアドレスと氏名は要求しないことも書く (requestedScopes = [])
  • 新しい英語文言には Localizable.xcstrings に ja の訳を足す (.claude/rules/localization-guidelines.md)

ドキュメント

  • 利用規約 (docs/Terms-ja.md / docs/Terms-en.md) 第 4 条の「任意で Sign in with Apple を連携できる」を、有料サービス (Pro) の購入には連携が必要、に合わせる。第 5 条 (料金) にも同じ条件を書く
  • LP (docs/index.html) のプラン表の Pro に、Sign in with Apple が必要なことを書く
  • documents/PROJECT.md の「コア体験」のアカウントの説明を実装に合わせる

検証

  • make build-ios と make test が通る。購入前の確認の分岐 (リンク済み・未リンクでサインイン完了・未リンクでキャンセル・統合先が既に Pro) をユニットテストで確かめる
  • ペイウォールの文言と、未リンクで購入ボタンを押した時に Sign in with Apple を求める画面を simtunnel でスクリーンショットに撮って確認する。Apple ID でのサインインと実際の購入は simulator でできないため、公開前チェックリスト (製品名・Support URL・App Privacy・ストア素材・実機 QA) #14 (公開前チェックリスト) の実機 QA に項目を足して移管する

App Review の注意

App Review Guideline 5.1.1 (v) に「If your app doesn't include significant account-based features, let people use it without a login」「Apps may not require users to enter personal information to function, except when directly relevant to the core functionality of the app」とある ( https://developer.apple.com/app-store/review/guidelines/ )。

購入前のサインイン必須は、この条文で審査に指摘され得る。Signalarm の Pro は、サーバー側のプラン・複数端末への配送・API トークンを持つアカウント単位の機能であり、Sign in with Apple ではメールアドレスと氏名を要求しない。この 2 点を審査向けのメモ (App Review Information の Notes) に書けるよう、PR 本文に文案を残す。審査で指摘された場合は、この issue の方針を見直す。

Refs #90

セッション再開

cd /Users/bannzai/worktrees/bannzai/Alarmify/issue-90
claude --resume 16914775-6dc5-4046-8caa-fd25aae0c33a

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions