I have updated to 12.4.1 on both my iPad and iPhone - which does not resolve this issue. The 12.4.1 update was largely to re-apply a security patch that was undone with the 12.4 update.
This is unlikely to be a device issue (i.e., not resolvable via an Erase and Install) because:
- The issue began to impact different Apple hardware at the same time (iPad, iPhone, Mac)
- For a short time-window last week, users with this issue (including me) were able to update some apps, but this stopped working shortly after
- The issue impacts multiple users in the same exact way, and the likelihood of any corruption propagating to all of a user's devices is highly unlikely.
In any case, I have an iPhone, Apple Watch, iPad and 3 separate MacBooks. It is completely unrealistic for me to Erase and Install, especially when the research I have done strongly supports that the AppleID might be the root cause of this issue.
I suspect the root-cause is the receipt validation mechanism which is responsible for checking that a user's AppleID is authorised to download/update an app. If the receipt list on Apple's end is broken, this might explain why the update fails. If the response is cached locally, this might also explain why sometimes the Update icon bounces back immediately, when sometimes it progresses to the status circle, before eventually bouncing back to the Update button.
I suspect the flow to update an app goes like this:
- User presses the Update button
- A request is sent to the Apple AppStore, with the app's unique ID, to check if that ID exists within the customer's purchase history
- If the receipt is 'validated' the app is allowed to update
- If the receipt cannot be 'validated', the update fails
This is detailed within the Apple Developer Guides:
https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Introduction.html
https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1
It is impossible for a end-user to troubleshoot this directly because communication to the AppStore is protected by certificate pinning which prevents Man-in-the-middle attacks.
At this stage I am inclined to ask Apple Tier 2 support to simulate an update from my account, read the AppStore response and compare that with the status codes detailed in the article above.
Saj