fix: route APNs delivery per-token by registered environment
Issue: after defaulting APNs delivery to production (#2381), development builds installed from Xcode stopped receiving notifications entirely: their sandbox device tokens were sent to the production APNs endpoint, rejected as BadDeviceToken, and dropped as dead. Fix: the iOS shell reads the aps-environment entitlement from the embedded provisioning profile and exposes it to the web layer as a document-start user script (added in capacitorDidLoad, since Capacitor replaces the userContentController after webViewConfiguration(for:)). Token registration reports the environment to the server, which stores it per token and groups delivery by environment for both relay and direct APNs sends. OPENCHAMBER_APNS_ENVIRONMENT remains as an explicit override forcing every send to one environment. TestFlight/App Store builds and older clients without the field default to production, preserving released behavior; the relay already accepts env per send request.
This commit is contained in:
@@ -778,6 +778,11 @@ export interface ApnsTokenPayload {
|
||||
token: string;
|
||||
/** 'ios' (APNs) or 'android' (FCM) — lets the relay route the token to the right service. */
|
||||
platform?: string;
|
||||
/**
|
||||
* APNs environment the token belongs to: 'sandbox' for Xcode/dev-signed installs,
|
||||
* 'production' for TestFlight/App Store. Omitted when unknown (server defaults to production).
|
||||
*/
|
||||
environment?: 'sandbox' | 'production';
|
||||
}
|
||||
|
||||
export interface PushAPI {
|
||||
|
||||
Reference in New Issue
Block a user