Skip to main content
Run npx cap sync, then rebuild the native app. Browser-only execution has no native push implementation.
Check google-services.json, the Google Services plugin, Maven Central, and the Android package ID configured in Pushctl.
Enable Push Notifications and add both APNs registration callbacks to AppDelegate.swift as shown in native setup. Confirm the APNs environment, then rebuild after syncing the plugin.
Match the Pushctl environment to the installed app: development-signed Xcode builds use Sandbox, while TestFlight and App Store builds use Production. See the iOS FAQ.
The host app probably did not post .capacitorDidRegisterForRemoteNotifications or .capacitorDidFailToRegisterForRemoteNotifications. Add both callbacks, then test on a device with valid APNs entitlements.
On iOS, inspect the forwarded APNs error and verify entitlements. On Android, verify Firebase initialization and google-services.json.
Check network access, the Client token, application platform configuration, and the API error. A native token alone does not mean the Pushctl API accepted the installation.
Call and await initialize before reading state.
Retain and remove listener handles when views unmount, or call removeAllListeners before rebuilding the listener set.
Add the native Notification Service Extension and configure the same App Group in both targets and initialize.
Wait for waitForRegistration() first. These methods reject when the installation is not registered or the Pushctl API update fails.
Call and await Pushctl.logout() as part of the app’s sign-out flow. Do not discard a rejected promise.