diff options
Diffstat (limited to 'Docs/StoreKit.md')
| -rw-r--r-- | Docs/StoreKit.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Docs/StoreKit.md b/Docs/StoreKit.md new file mode 100644 index 0000000..0d2eb33 --- /dev/null +++ b/Docs/StoreKit.md @@ -0,0 +1,42 @@ +# StoreKit Setup For Hutch + +Hutch uses StoreKit 2 for one-time consumable tip products: + +- `net.cleberg.hutch.tip.small` +- `net.cleberg.hutch.tip.medium` +- `net.cleberg.hutch.tip.large` + +## Xcode setup + +1. Open `Hutch.xcodeproj` in Xcode. +2. Select the `Hutch` target. +3. Open `Signing & Capabilities`. +4. Confirm the App ID for `net.cleberg.Hutch` has the In-App Purchase capability enabled in the Apple Developer portal. +5. In Xcode, choose `File > New > File... > StoreKit Configuration File`. +6. Prefer a synced StoreKit file so Xcode pulls the real products from App Store Connect. +7. Open `Product > Scheme > Edit Scheme...`. +8. Select `Run`, then the `Options` tab. +9. Set `StoreKit Configuration` to the synced `.storekit` file for local testing. + +## App Store Connect checks + +1. Confirm all three products exist with the exact product IDs listed above. +2. Confirm each product has complete metadata, pricing, and availability. +3. If a product is in `Developer Action Needed`, edit the rejected detail or cancel the pending change, then resubmit it. +4. Wait up to one hour for metadata changes to propagate to sandbox. + +## Sandbox test checklist + +1. On a physical device, enable Developer Mode if needed. +2. Sign in to a Sandbox Apple Account in `Settings > Developer > Sandbox Apple Account`. +3. Install a development build from Xcode or a TestFlight build. +4. Open `More > About`. +5. Verify the tip products load with names and prices. +6. Complete one purchase successfully. +7. Use `Restore / Sync Purchases` to verify StoreKit can talk to the App Store account. +8. Record this full flow for App Review when resubmitting. + +## Code locations + +- `Hutch/Views/More/TipStoreViewModel.swift` +- `Hutch/Views/More/AboutView.swift` |
