apple resubmit: REJECTED review submission items are marked resolved before the submit (PATCH reviewSubmissionItems resolved: true; the version item by default, IAP / subscription items with --resolve-iaps), plan table 'mark resolved' rows; on 409 'not ready yet' the items are re-read and a REJECTED item out of scope stops the run at once naming it and how to resolve it, backoff only when none is left; an empty READY_FOR_REVIEW draft is never canceled (409 'not in cancellable state'): left as is, no cancel command, apple status labels it harmless and treats the cancel 409 as such; fake ASC blocks submit on REJECTED items and refuses to cancel empty drafts. Pitfall 30
This commit is contained in:
parent
0da5ee9d01
commit
1724296e59
17 changed files with 291 additions and 78 deletions
|
|
@ -93,8 +93,10 @@ answers the compliance facts no file proves, all in one batch at the start.
|
|||
- 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.
|
||||
draft), adds only missing items, marks the REJECTED version item resolved (Apple refuses every submit with "not
|
||||
ready to be submitted yet" until it is; IAP items with `--resolve-iaps`) and resubmits, retrying only while
|
||||
nothing is left REJECTED (pitfall 30, `review-rejections`). `apple iap-submit` reuses it the same way. An empty
|
||||
draft (0 items) cannot be canceled and is harmless.
|
||||
- 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.
|
||||
|
|
|
|||
|
|
@ -53,10 +53,16 @@ in-app purchases). Resubmit that same submission; never create a second one next
|
|||
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.
|
||||
submission reused, every item in it already or added, which REJECTED items are marked resolved, 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).
|
||||
items go in, the REJECTED version item is marked resolved (`PATCH reviewSubmissionItems/{id}` `resolved: true`),
|
||||
then it submits. Apple answers every submit with "Version is not ready to be submitted yet" (and the console's
|
||||
Resubmit button stays disabled) while any item is still REJECTED; the command reads the items again on that
|
||||
answer and stops at once naming the item instead of retrying. A REJECTED in-app purchase or subscription item is
|
||||
marked resolved only with `--resolve-iaps`, once what App Review asked for is fixed. With nothing left REJECTED,
|
||||
"not ready" is retried with backoff (normal for a few minutes after a build is attached; it gives up after
|
||||
10 minutes and a re-run continues).
|
||||
An empty draft next to the submission (0 items) cannot be canceled and is harmless: leave it.
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -399,11 +399,25 @@ that fails without the fix (see CONTRIBUTING.md).
|
|||
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.
|
||||
- **Also seen (same day):** with build 2 VALID, APP_STORE_ELIGIBLE and attached, every `PATCH reviewSubmissions/{id}
|
||||
submitted: true` answered 409 STATE_ERROR "Version is not ready to be submitted yet, please try again later" for
|
||||
25 minutes, and the console's Resubmit and Add for Review buttons were disabled. Retrying never helps: the
|
||||
appStoreVersion item was still REJECTED. `PATCH /v1/reviewSubmissionItems/{item id}` with
|
||||
`{"data":{"type":"reviewSubmissionItems","id":"<item id>","attributes":{"resolved":true}}}` answered 200, the item
|
||||
went to READY_FOR_REVIEW, and the submit then passed (WAITING_FOR_REVIEW). The 7 IAP items were READY_FOR_REVIEW.
|
||||
An empty READY_FOR_REVIEW draft (0 items) cannot be canceled: `canceled: true` answers 409 "Resource is not in
|
||||
cancellable state". It is harmless; leave it (a later run reuses it).
|
||||
- **Do:** upload the fixed build, `storebound apple status` (shows the submission, its items, which are REJECTED and
|
||||
not resolved, and the command), then `storebound apple resubmit --build <n>` (dry run, plan table with "mark
|
||||
resolved" rows) and after the owner's yes `--yes`: it attaches the build, marks the REJECTED version item resolved,
|
||||
then submits. REJECTED IAP / subscription items are marked resolved only with `--resolve-iaps` (after fixing what
|
||||
App Review asked for). Right after a build is attached, "not ready yet" with nothing left REJECTED is retried with
|
||||
backoff (up to 10 min) and a re-run continues where it stopped. Never offer a cancel command for an empty draft.
|
||||
- **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`.
|
||||
it), a draft created by the same run is left as is (not cancellable) and the named one used; `resolveRejected` /
|
||||
`toResolve` mark REJECTED items in scope resolved before the submit; `submitWithRetry` (cli/apple/submission.ts)
|
||||
re-reads the items on "not ready", resolves those in scope and stops at once (naming the item and how to resolve
|
||||
it) when one out of scope is left, backing off only when none is; `apple status` labels an empty draft "empty draft
|
||||
(harmless; App Store Connect keeps it, not cancellable)" and treats the cancel 409 as harmless; the fake ASC blocks
|
||||
the submit while an item is REJECTED and refuses to cancel an empty draft; `tests/resubmit.test.ts`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue