Skip to main content
Confirm the Push Notifications capability, call requestPermission, forward both APNs success and failure callbacks, and use a Client token. Then await waitForRegistration() to surface the exact failure.
Confirm AppDelegate forwards didRegisterForRemoteNotificationsWithDeviceToken to setDeviceToken and didFailToRegisterForRemoteNotificationsWithError to reportRemoteNotificationRegistrationFailure. Test on a device with valid entitlements.
Inspect the error thrown by waitForRegistration() or delivered to registrationFailed. Verify network access, the Client token, and the platform configuration in Pushctl.
Match the Pushctl environment to the installed app’s aps-environment: development-signed Xcode builds use Sandbox, while TestFlight and App Store builds use Production. Then confirm the bundle ID and relaunch the app to register its current token. See the iOS FAQ.
Confirm the Team ID, Key ID, .p8 key, and the key’s environment and topic scope in the Apple Developer portal. Authentication failures are separate from a device token environment mismatch.
Add the Notification Service Extension and give both targets the identical App Group. Set PushctlAppGroupIdentifier in the extension.
Confirm the App Group entitlement on both targets and the exact identifier used during initialization and in Info.plist.
Assign notificationOpened during app startup and keep deep-link handling safe for cold launches.
iOS does not show the permission prompt again. Direct the user to the app’s notification settings.
Await confirmed registration first. Identity methods fail when the installation is not registered or the Pushctl API rejects the update.
Check subscriptionState.registrationStatus, registrationError, and isRegistered before comparing the installation ID with the dashboard.