First, ensure you're finishing transactions upon success/failure:
In our case, the old code was not calling `SKPaymentQueue.default().finishTransaction(transaction)` to remove it from the queue. Prior to iOS 13.4, that apparently worked fine even though the documentation says it’s required
So what would happen is the dialog would show once and the person would cancel and then from that point on the transaction would persist in the queue and automatically return as cancelled without showing the dialog again. Finishing the transaction purges it and allows the dialog to show again
---
If that doesn't work:
Per an Apple engineer's request, I filed a radar for this (FB7648374) with App Store logging and sysdiagnose
Please do the same:
- Follow the instructions for App Store logging at https://developer.apple.com/bug-reporting/profiles-and-logs/
- Install the profile on your device that enables verbose logging
- Then repro the problem on your device w/ device logs running (Xcode -> Devices -> Console logs)
- Then immediately capture a sysdiagnose
- File a new radar with that information at https://feedbackassistant.apple.com/