Skip to content

Add and accept the promoted Lifetime Pro purchase flow #18

Description

@lightcloud00

Outcome

Let the approved Lifetime Pro non-consumable appear on the App Store and safely continue an App Store-initiated purchase inside ParkNudge.

Dependencies

Plan

  • Add protocol-backed handling for StoreKit PurchaseIntent on the iOS 17 deployment target.
  • Route an App Store-initiated intent to the same verified purchase/entitlement authority as the in-app paywall.
  • Handle already-entitled, success, cancelled, pending, unverified, unavailable, and interrupted launches.
  • Create a compliant 1024-by-1024 promotional image distinct from the app icon and without important lower-left content.
  • Add StoreKitTest coverage and a physical-device Sandbox checklist.
  • Configure promotion only after the product and metadata are approved.

Guardrails

  • Render only StoreKit localized displayPrice.
  • Never unlock from cached preference or an unverified transaction.
  • Promotion is optional; a failure must leave the complete free workflow usable.

Acceptance

  • Tests cover all outcomes and cold/warm launch routing.
  • Sandbox receipt demonstrates App Store-initiated purchase and restore.
  • Public product-page visibility is read back after approval.

Apple guidance: https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/promote-in-app-purchases/


Scope / non-scope

Only the work and evidence already described in this issue are in scope. Merge, deployment, provider or store mutation, spend, billing, customer contact, device acceptance, indexing, and release remain separate gates unless this issue explicitly includes them and fresh proof is recorded.

Evidence and closure

Close only from exact current-source evidence plus the applicable independent readback. Keep local, GitHub/CI, provider, deployment, device, store, commerce, indexing, traffic, and revenue evidence distinct; one does not imply another.

Owner / lane

The repository delivery lane owns ordinary implementation and verification. The operator owns only actions explicitly marked as operator-only or protected.

Resolution plan

  • Verified: 2026-08-25T05:34:22Z against main@04a6cd5e808720983471ee9595fd40bc94e1f0fe (commit time 2026-08-25T00:53:29Z).
  • Source basis: Original issue body, all 0 comment(s), current default-branch tree, disposition-appropriate source-path checks, and referenced pull-request states.
  • Disposition: Operator or external gate - execute only the bounded proof steps and stop at protected actions.
  • Outcome: Let the approved Lifetime Pro non-consumable appear on the App Store and safely continue an App Store-initiated purchase inside ParkNudge.

Current evidence and corrected premise

The issue remains open and requires the resolution steps below.
All 0 issue comment(s) were read. There are no comments.

Resolution steps

  1. Refresh the authoritative external state and bind it to the exact account, app, build, deployment, or provider identity.
  2. Reconcile that readback with the issue-authored work below and identify the smallest remaining action.
  3. Prepare the protected action, rollback, and failure receipt without exposing credentials or inferring authority.
  4. Stop for the required operator decision or action, then execute it once through the owning workflow.
  5. Validate the official readback and map it to every acceptance item before closure.

Grounded issue-authored detail

Scope / non-scope

Only the work and evidence already described in this issue are in scope. Merge, deployment, provider or store mutation, spend, billing, customer contact, device acceptance, indexing, and release remain separate gates unless this issue explicitly includes them and fresh proof is recorded.

Tests and acceptance

Acceptance

  • Tests cover all outcomes and cold/warm launch routing.
  • Sandbox receipt demonstrates App Store-initiated purchase and restore.
  • Public product-page visibility is read back after approval.

Apple guidance: https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/promote-in-app-purchases/


Dependencies and stop gates

Dependencies

Next AI first action

Only the work and evidence already described in this issue are in scope. Merge, deployment, provider or store mutation, spend, billing, customer contact, device acceptance, indexing, and release remain separate gates unless this issue explicitly includes them and fresh proof is recorded.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: commerceStoreKit, App Store Connect, and purchase acceptancearea: iosiOS application workblocked: externalDepends on hardware, account, ownership, or external serviceenhancementNew feature or requestpriority:p1Important next milestone workreadiness:diagnosticExact bounded investigation requiredrevenue:r2Multiple gates remain before revenue

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions