Play console steps without an API as agent plans: play-store-settings (App category; play listing cannot set it), play-app-content (every card in order, one owner batch) and its cards (privacy policy, ads, sign in details, advertising ID, government, financial, health), play-production-countries and play-production-release; IARC plan with the Terms of Use agreement, follow-ups (console.contentRating.details, products[].randomRewards, social) and the Summary's final Save; config play.category / countries / managedPublishing, console.appContent; check, validate, play status and play release reminders; inPageLoop helper and material checkbox clicks; App Privacy published signal; first IAPs via apple iap-submit --with-version. Pitfalls 27, 28
This commit is contained in:
parent
dbd9f2973c
commit
b7bfe89151
37 changed files with 1624 additions and 121 deletions
|
|
@ -104,6 +104,12 @@ export interface PlaySnapshot {
|
|||
subscriptions?: { productId: string; basePlans: { basePlanId: string; state?: string }[] }[];
|
||||
expectedSubscriptions?: { id: string; basePlanId: string }[];
|
||||
profile?: ProfileFacts;
|
||||
/** The Play App category the config gives (play.category or the App Store mapping), null when none: the API cannot
|
||||
* read or set it, so validate only reminds that Store settings is a console step. */
|
||||
category?: { category: string; source: string } | null;
|
||||
/** Countries / regions of the production track (edits.countryAvailability GET; -1 = rest of world too), null when
|
||||
* it could not be read. */
|
||||
productionCountries?: number | null;
|
||||
}
|
||||
|
||||
const EDITABLE = ['PREPARE_FOR_SUBMISSION', 'DEVELOPER_REJECTED', 'REJECTED', 'METADATA_REJECTED', 'INVALID_BINARY'];
|
||||
|
|
@ -226,6 +232,16 @@ export function playRules(s: PlaySnapshot): Finding[] {
|
|||
} else add('warn', 'app-ads', 'app-ads.txt reachable; set ads.appAdsTxt in the config to check its lines');
|
||||
}
|
||||
|
||||
if (s.category !== undefined) {
|
||||
if (s.category) add('ok', 'category', `App category ${s.category.category} (${s.category.source}): the Play API cannot read it; check Store settings shows it`, 'storebound console plan play-store-settings');
|
||||
else add('warn', 'category', 'no play.category: Store settings > App category stays "Not selected" (the Play API cannot set it)', 'set play.category, then storebound console plan play-store-settings');
|
||||
}
|
||||
|
||||
if (s.productionCountries === 0) {
|
||||
const prod = s.tracks.some(t => t.track === 'production' && t.releases.length);
|
||||
add(prod ? 'blocker' : 'warn', 'countries', 'production has 0 countries / regions (the API cannot set them)', 'storebound console plan play-production-countries');
|
||||
} else if (typeof s.productionCountries === 'number') add('ok', 'countries', `production: ${s.productionCountries < 0 ? 'every country / region' : `${s.productionCountries} countries / regions`}`);
|
||||
|
||||
const anyRelease = s.tracks.some(t => t.releases.length);
|
||||
if (!anyRelease) add('blocker', 'tracks', 'no release on any track', 'storebound play release <aab>');
|
||||
for (const t of s.tracks) for (const r of t.releases) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue