Skip to content

feat(verify): push registration checks and causes - #44

Draft
mahmoud-elmorabea wants to merge 19 commits into
verify-03-platform-androidfrom
verify-04-push-registration
Draft

mahmoud-elmorabea wants to merge 19 commits into
verify-03-platform-androidfrom
verify-04-push-registration

Conversation

@mahmoud-elmorabea

Copy link
Copy Markdown
Contributor

Adds push's four registration checks (project wiring, workspace, device, profile) and the catalog of causes with their fixes.

Part 4 of 8 of verify push, stacked on #43.

🤖 Generated with Claude Code

The four registration steps (project wiring, workspace, device, profile),
the catalog of push causes with their fixes, and push's wording in the
report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mahmoud-elmorabea and others added 18 commits October 17, 2026 21:24
…'t read

- Project wiring for React Native, Expo and Flutter: the SDK and push module
  come with the wrapper package, CustomerIO.initialize only has to be called
  (from JavaScript, TypeScript or Dart), and the package's manifest declares
  POST_NOTIFICATIONS for the app.
- Workspace ready: an iOS app on Firebase needs a workspace that sends iOS
  through Firebase; the keys the app and its extension run with have to be
  the workspace's, and a key from elsewhere names its workspace.
- Device ready: an answer from Firebase is enough to call the network up,
  and a build that isn't debuggable is said to be unreadable.
- The shared wiring causes say what to do on each platform.
- An extension whose SDK logged nothing proves arrival only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A key from another workspace and a dead key were told apart by reading every
workspace's sources, which took minutes on a large account. Both now read as
a key this workspace didn't issue, with the same fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The remedy spoke only of a freshly booted simulator. On Android the usual
cause is a dead connection to Firebase that still reports itself connected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…keep it open

An app sent to the background straight after a login has no network on
recent Android and is suspended on iOS, so its login and device registration
wait on the device: right after a fresh login, Profile linked failed apps
that were fine. When the profile or device isn't there at first, the app is
now opened once before the wait, and the profile causes say to keep the app
open for about 30 seconds after logging in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l looked

A token or user missing from the stores fails Device ready only when the SDK says so
itself, or for an SDK version whose stores the tool has checked; otherwise it is unproven
(device.sdk_state_unreadable). Before that, the run takes --token and --user, and the
SDK's own sdk.state line, read only when the stores can't answer. The app's key is matched
by the prefix the state line gives, and a key read from an unchecked store convicts
nothing. From SDK 4.4 the App Group check expects the SDK's default group when code names
none, and before 4.4 it has nothing to check. A wrapper whose Gradle files the tool can't
read is a warning, not a missing push module.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the SDK's version

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It finds the push extension through its Info.plist, read with plutil,
and CI runs on Linux.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant