Files
JQC_iOS_App/PLACEMENT_MAP.txt

46 lines
2.1 KiB
Plaintext

JQC iOS — FIX for App Store Connect error 90771
===============================================
Missing Info.plist value: BGTaskSchedulerPermittedIdentifiers
This supersedes the Info.plist from the previous background-sync drop.
The Swift files from that drop are unchanged and still correct.
OVERWRITE:
JanitorialQC/Info.plist <- now has BOTH keys, as arrays
JanitorialQC.xcodeproj/project.pbxproj <- removes 2 inert lines
JanitorialQC/CLAUDE.md
WHAT WAS WRONG
INFOPLIST_KEY_BGTaskSchedulerPermittedIdentifiers = com.jqc.sync
was set in build settings (Debug + Release). INFOPLIST_KEY_* only merges
Xcode's recognised keys, and only as STRINGS.
BGTaskSchedulerPermittedIdentifiers must be an ARRAY, so nothing valid ever
reached the built Info.plist. It went unnoticed until UIBackgroundModes was
added, which is what makes the App Store validator check for it.
pbxproj CHANGE IS EXACTLY 2 LINE DELETIONS (verified by diff):
line 419 (Debug) INFOPLIST_KEY_BGTaskSchedulerPermittedIdentifiers = com.jqc.sync;
line 463 (Release) INFOPLIST_KEY_BGTaskSchedulerPermittedIdentifiers = com.jqc.sync;
Nothing else touched. If you prefer not to take a pbxproj file, delete those
two lines by hand, or in Xcode: target > Build Settings > search "BGTask" >
select the row > Delete.
DO NOT put that build setting back. A build setting overwrites the plist
file's value at merge time and the array becomes a string again.
BUILD + VERIFY BEFORE UPLOADING
1. Product > Clean Build Folder (Shift-Cmd-K)
2. Product > Archive
3. In Organizer: right-click the archive > Show in Finder >
Show Package Contents > Products/Applications/JanitorialQC.app
plutil -p JanitorialQC.app/Info.plist | grep -A3 -E "BGTask|UIBackground"
EXPECT:
"BGTaskSchedulerPermittedIdentifiers" => [ 0 => "com.jqc.sync" ]
"UIBackgroundModes" => [ 0 => "processing" ]
Both must be arrays. If either shows a bare string, stop - the build
setting is back.
4. Then upload. Error 90771 should be gone.
5. On device, confirm the console shows NO
"[JQC] BGTaskScheduler.register FAILED" line at launch.