apple resubmit after a rejection: iap-submit reuses the open review submission (UNRESOLVED_ISSUES gets only missing items and is resubmitted, a draft is reused, one waiting for or in review means nothing is sent), never a second draft; 409 ITEM_PART_OF_ANOTHER_SUBMISSION names the other submission instead of the list-lag message, a draft the run created is canceled and the named one used; submit retried with backoff and heartbeat while Apple says not ready yet; new apple resubmit --build <n> (build by number, plan table, --yes); apple status lists UNRESOLVED_ISSUES items and the resubmit command. Pitfall 30
This commit is contained in:
parent
c8213be2b6
commit
0da5ee9d01
21 changed files with 726 additions and 80 deletions
|
|
@ -90,6 +90,11 @@ answers the compliance facts no file proves, all in one batch at the start.
|
|||
and the version page has no "In-App Purchases and Subscriptions" section any more. If the version was already
|
||||
submitted without them: cancel the review submission (`storebound apple status --cancel-submission <id>`, the
|
||||
owner's yes), wait a minute, then `apple iap-submit --with-version` (pitfall 28).
|
||||
- Rejected (Invalid Binary, a crash, ...): the review submission stays open with UNRESOLVED_ISSUES and keeps the
|
||||
version and its IAPs. Upload a fixed build, then `storebound apple resubmit --build <n>` (dry run with the plan
|
||||
table), and after the owner's yes `--build <n> --yes`: it attaches build n, reuses that submission (no second
|
||||
draft), adds only missing items and resubmits, retrying while Apple says "not ready to be submitted yet"
|
||||
(pitfall 30, `review-rejections`). `apple iap-submit` reuses it the same way.
|
||||
- App Privacy (data types, purposes, linked, tracking) is UI-only and must be **published**, not just saved.
|
||||
- Export compliance unanswered = "Missing Compliance": `storebound apple encryption` (`export-compliance`).
|
||||
- ITMS-91053 / 91061 privacy manifest emails after upload: `privacy-manifest` skill.
|
||||
|
|
|
|||
|
|
@ -46,6 +46,19 @@ Flutter / React Native code, the Health apps declaration, alignment inside prebu
|
|||
|
||||
Start with Fix or Clarify; Push back only with evidence; Appeal last. Always ask the owner before sending anything.
|
||||
|
||||
### Apple: resubmit a fixed build (Invalid Binary, crash, ...)
|
||||
The rejected submission stays open with **UNRESOLVED_ISSUES** and keeps its items (the version, REJECTED, and its
|
||||
in-app purchases). Resubmit that same submission; never create a second one next to it (Apple then answers 409
|
||||
`ITEM_PART_OF_ANOTHER_SUBMISSION`).
|
||||
1. Upload the fixed build and note its number (`storebound apple upload`, `apple encryption` if it asks).
|
||||
2. `storebound apple status`: the submission with UNRESOLVED_ISSUES, its items and their states.
|
||||
3. `storebound apple resubmit --build <n>` (dry run without `--yes`): the plan table shows the build to attach, the
|
||||
submission reused, every item in it already or added, and the submit.
|
||||
4. The owner's yes, then `storebound apple resubmit --build <n> --yes`: build n is attached by its number, missing
|
||||
items go in, and the submit is retried with backoff while Apple says "Version is not ready to be submitted yet"
|
||||
(normal for a few minutes after a build is attached; it gives up after 10 minutes and a re-run continues).
|
||||
5. Reply in the Resolution Center what changed (template below), then `storebound apple status --wait-review`.
|
||||
|
||||
## 2. Reply template (Resolution Center / appeal, under 200 words)
|
||||
```
|
||||
Hello, thank you for the review.
|
||||
|
|
|
|||
|
|
@ -392,3 +392,18 @@ that fails without the fix (see CONTRIBUTING.md).
|
|||
--propose` writes true only with `appPrivacy.trackingDomains`; `apple upload` checks every manifest in the IPA
|
||||
(app root, Frameworks, bundles) before any network call, `apple build` after the export;
|
||||
`tests/privacy-tracking.test.ts`.
|
||||
|
||||
## 30. Resubmit after a rejection: reuse the UNRESOLVED_ISSUES submission
|
||||
- **Symptom:** after an Invalid Binary rejection, `apple iap-submit --with-version --yes` created a new, empty draft
|
||||
and stopped with "the store says it already exists but does not list it yet (its lists lag ...)". The real answer
|
||||
was 409 `ITEM_PART_OF_ANOTHER_SUBMISSION`: the version was still in the rejected submission.
|
||||
- **Cause:** a rejected submission stays open with UNRESOLVED_ISSUES and keeps its items (the REJECTED version, its
|
||||
IAPs); storebound only looked for READY_FOR_REVIEW drafts, and read the 409's "already added" as a duplicate.
|
||||
- **Do:** upload the fixed build, `storebound apple status` (shows the submission, its items and the command), then
|
||||
`storebound apple resubmit --build <n>` (dry run, plan table) and after the owner's yes `--yes`. Expect "Version is
|
||||
not ready to be submitted yet" for a few minutes after the build is attached: the command retries with backoff
|
||||
(up to 10 min) and a re-run continues where it stopped.
|
||||
- **Guard:** `chooseSubmission` (cli/lib/review-submit.ts) reuses an open submission and never creates a second one;
|
||||
`addItem` turns the 409 into a message naming the other submission (never the lag message: `isConflict` excludes
|
||||
it), a draft created by the same run is canceled and the named one used; `submitWithRetry` (cli/apple/submission.ts);
|
||||
`tests/resubmit.test.ts`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue