提供商品
| 商品 | Product ID | 形式 |
| 広告削除 | com.happyboy1002.CHROMATIC.removeads | 非消耗型・買い切り(¥240) |
PurchaseManager API
@Observable @MainActor
final class PurchaseManager {
var isAdsRemoved: Bool
func loadProducts() async
func purchase() async throws
func restore() async throws
func verifyEntitlements() async // 起動時に呼出(改ざん対策)
}
処理フロー
- App起動時に
verifyEntitlements() でStoreKitから最新を取得
- UserDefaults
chromatic_ads_removed を上書き(オフラインキャッシュとして保持)
- 購入時
product.purchase()
- VerificationResult で検証 → transaction.finish()
改ざん対策
UserDefaults はオフラインキャッシュのみ。起動時に必ず StoreKit で上書きするため、
UserDefaults を直接書き換えても次回起動でリセットされる。
変更履歴
| バージョン | 日付 | 変更内容 |
|---|
| 1.0 | 2026-05-09 | 初版作成 |