Category
IT Dev
Development notes from apps and services I build.
Rules that make an App Store review submission safe to rerun
If the server accepts a review request but the response is lost, a rerun is rejected as a duplicate. How DailySudoku decides what a rerun should do.
Fixing the order of the UMP explainer and the ATT request on iOS
DailySudoku requested ATT from the app, while Google UMP could also request it after an explainer. How I found the ATT calls in the SDK and reordered them.
Keeping the export compliance answer in sync across two files and ASC
The encryption export answer lives in Info.plist, a submission declaration file, and App Store Connect. Fixing a false success and a blocking regression.
When parallel tests disturbed each other through global notifications
An ad banner test that passed locally in 0.02 seconds hit a 45-minute limit in CI. The cause was a global notification from another test, fixed by injection.
How a canceled Task still ran to the end in a review prompt
A review prompt scheduled 2 seconds after a win could still run after the screen was left. A cancel after Task.sleep returns does not come back as an error.
Turning Apple Pencil handwriting into Sudoku digits
Placing a handwritten digit in DailySudoku: splitting strokes into taps and ink, grouping them, building model input, and applying only trusted results.
Exposing 81 Sudoku cells to VoiceOver and TalkBack
The DailySudoku board is one view on screen, but assistive technology needs 81 cells. How iOS and Android expose each cell, and what is still unverified.
Why a daily puzzle ID needs a generator version
A daily board is made from the date. If the generator changes, one date can give two boards, and a date-only ID cannot tell them apart. Design and proposal.
Keeping and revoking a one-time remove-ads purchase on iOS and Android
A remove-ads purchase looks final, but reinstalls, pending payments, and refunds make the purchase result alone unreliable. Read current entitlements instead.