The Pushctl plugin is not implemented
The Pushctl plugin is not implemented
Run
npx cap sync, then rebuild the native app. Browser-only execution has no native push implementation.Android does not register
Android does not register
Check
google-services.json, the Google Services plugin, Maven Central, and the Android package ID configured in Pushctl.iOS does not register
iOS does not register
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.APNs returns BadDeviceToken on iOS
APNs returns BadDeviceToken on iOS
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.
waitForRegistration times out on iOS
waitForRegistration times out on iOS
The host app probably did not post
.capacitorDidRegisterForRemoteNotifications or .capacitorDidFailToRegisterForRemoteNotifications. Add both callbacks, then test on a device with valid APNs entitlements.waitForRegistration reports a native error
waitForRegistration reports a native error
On iOS, inspect the forwarded APNs error and verify entitlements. On Android, verify Firebase initialization and
google-services.json.Registration fails after a native token is received
Registration fails after a native token is received
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.
getSubscriptionState rejects
getSubscriptionState rejects
Call and await
initialize before reading state.Events fire more than once
Events fire more than once
Retain and remove listener handles when views unmount, or call
removeAllListeners before rebuilding the listener set.Background iOS events are missing
Background iOS events are missing
Add the native Notification Service Extension and configure the same App Group in both targets and
initialize.Login or logout rejects
Login or logout rejects
Wait for
waitForRegistration() first. These methods reject when the installation is not registered or the Pushctl API update fails.The user remains associated after app logout
The user remains associated after app logout
Call and await
Pushctl.logout() as part of the app’s sign-out flow. Do not discard a rejected promise.