Resolved...and it was not APNs, and not the device. Posting the conclusion so nobody chases the wrong thing.
The bug is in our own dependency. posthog-ios (3.69.6) captures push subscriptions by swizzling application(_:didRegisterForRemoteNotificationsWithDeviceToken:), and that option defaults to on. On this iPhone 12 Pro the swizzle swallowed the callback entirely — neither the success nor the failure delegate method ever fired, so the app never received a token.
Bisected against a minimal app built with the same bundle id, team and production entitlement, which registered in 4 ms on the same handset. With PostHog's capturePushNotificationSubscriptions set to false and everything else in the SDK left on, our own app registers normally.
My original report was wrong in one important way: I claimed neither delegate method fired, but I inferred that from a missing log line. Our release log level is .warn and the success callback logs at .info, so its absence proved nothing. Once I forced the level up, the picture was unambiguous.
Withdrawing FB24525199. Apologies for the noise, and thanks to those who looked.
Topic:
App & System Services
SubTopic:
Notifications
Tags: