Push Updates NOT working on iOS, but work perfectly for Droid and Web #366

Closed
opened 2025-10-09 16:25:23 +03:00 by OVERLORD · 5 comments
Owner

Originally created by @LeeWhite187 on GitHub.

Vaultwarden Support String

Your environment (Generated via diagnostics page)

  • Vaultwarden version: v1.32.0
  • Web-vault version: v2024.6.2b
  • OS/Arch: linux/x86_64
  • Running within a container: true (Base: Debian)
  • Environment settings overridden: true
  • Uses a reverse proxy: true
  • IP Header check: true (X-Real-IP)
  • Internet access: true
  • Internet access via a proxy: false
  • DNS Check: true
  • Browser/Server Time Check: true
  • Server/NTP Time Check: true
  • Domain Configuration Check: true
  • HTTPS Check: true
  • Database type: SQLite
  • Database version: 3.46.0
  • Clients used:
  • Reverse proxy and version:
  • Other relevant information:

Config (Generated via diagnostics page)

Show Running Config

Environment settings which are overridden: DOMAIN, ADMIN_TOKEN

{
  "_duo_akey": null,
  "_enable_duo": true,
  "_enable_email_2fa": true,
  "_enable_smtp": true,
  "_enable_yubico": true,
  "_icon_service_csp": "",
  "_icon_service_url": "",
  "_ip_header_enabled": true,
  "_max_note_size": 10000,
  "_smtp_img_src": "cid:",
  "admin_ratelimit_max_burst": 3,
  "admin_ratelimit_seconds": 300,
  "admin_session_lifetime": 20,
  "admin_token": "***",
  "allowed_iframe_ancestors": "",
  "attachments_folder": "data/attachments",
  "auth_request_purge_schedule": "30 * * * * *",
  "authenticator_disable_time_drift": false,
  "data_folder": "data",
  "database_conn_init": "",
  "database_max_conns": 10,
  "database_timeout": 30,
  "database_url": "***************",
  "db_connection_retries": 15,
  "disable_2fa_remember": false,
  "disable_admin_token": false,
  "disable_icon_download": false,
  "domain": "*****://**********************",
  "domain_origin": "*****://**********************",
  "domain_path": "",
  "domain_set": true,
  "duo_context_purge_schedule": "30 * * * * *",
  "duo_host": null,
  "duo_ikey": null,
  "duo_skey": null,
  "duo_use_iframe": false,
  "email_2fa_auto_fallback": false,
  "email_2fa_enforce_on_verified_invite": false,
  "email_attempts_limit": 3,
  "email_change_allowed": true,
  "email_expiration_time": 600,
  "email_token_size": 6,
  "emergency_access_allowed": true,
  "emergency_notification_reminder_schedule": "0 3 * * * *",
  "emergency_request_timeout_schedule": "0 7 * * * *",
  "enable_db_wal": true,
  "enable_websocket": true,
  "event_cleanup_schedule": "0 10 0 * * *",
  "events_days_retain": null,
  "experimental_client_feature_flags": "fido2-vault-credentials",
  "extended_logging": true,
  "helo_name": null,
  "hibp_api_key": null,
  "http_request_block_non_global_ips": true,
  "http_request_block_regex": null,
  "icon_blacklist_non_global_ips": true,
  "icon_blacklist_regex": null,
  "icon_cache_folder": "data/icon_cache",
  "icon_cache_negttl": 259200,
  "icon_cache_ttl": 2592000,
  "icon_download_timeout": 10,
  "icon_redirect_code": 302,
  "icon_service": "internal",
  "incomplete_2fa_schedule": "30 * * * * *",
  "incomplete_2fa_time_limit": 3,
  "increase_note_size_limit": false,
  "invitation_expiration_hours": 120,
  "invitation_org_name": "Vaultwarden",
  "invitations_allowed": true,
  "ip_header": "X-Real-IP",
  "job_poll_interval_ms": 30000,
  "log_file": null,
  "log_level": "debug",
  "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f",
  "login_ratelimit_max_burst": 10,
  "login_ratelimit_seconds": 60,
  "org_attachment_limit": null,
  "org_creation_users": "",
  "org_events_enabled": false,
  "org_groups_enabled": false,
  "password_hints_allowed": true,
  "password_iterations": 600000,
  "push_enabled": true,
  "push_identity_uri": "https://identity.bitwarden.com",
  "push_installation_id": "***",
  "push_installation_key": "***",
  "push_relay_uri": "https://push.bitwarden.com",
  "reload_templates": false,
  "require_device_email": false,
  "rsa_key_filename": "data/rsa_key",
  "send_purge_schedule": "0 5 * * * *",
  "sendmail_command": null,
  "sends_allowed": true,
  "sends_folder": "data/sends",
  "show_password_hint": false,
  "signups_allowed": false,
  "signups_domains_whitelist": "",
  "signups_verify": false,
  "signups_verify_resend_limit": 6,
  "signups_verify_resend_time": 3600,
  "smtp_accept_invalid_certs": false,
  "smtp_accept_invalid_hostnames": false,
  "smtp_auth_mechanism": null,
  "smtp_debug": false,
  "smtp_embed_images": true,
  "smtp_explicit_tls": null,
  "smtp_from": "*****************************",
  "smtp_from_name": "Vaultwarden",
  "smtp_host": "******************",
  "smtp_password": "***",
  "smtp_port": 587,
  "smtp_security": "starttls",
  "smtp_ssl": null,
  "smtp_timeout": 15,
  "smtp_username": "*****************************",
  "templates_folder": "data/templates",
  "tmp_folder": "data/tmp",
  "trash_auto_delete_days": null,
  "trash_purge_schedule": "0 5 0 * * *",
  "use_sendmail": false,
  "use_syslog": false,
  "user_attachment_limit": null,
  "user_send_limit": null,
  "web_vault_enabled": true,
  "web_vault_folder": "web-vault/",
  "yubico_client_id": null,
  "yubico_secret_key": null,
  "yubico_server": null
}

Vaultwarden Build Version

1.32.0

Deployment method

Official Container Image

Custom deployment method

self-hosted vaultwarden
Running behind an nginx proxy, following the several examples in the guide, with websocket (web ui sync) working well for connected clients.

Reverse Proxy

nginx/1.18.0 (Ubuntu)

Host/Server Operating System

Linux

Operating System Version

Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-72-generic x86_64)

Clients

iOS

Client Version

Bitwarden app version: 2024.9.2, on iOS 16.1.1

Steps To Reproduce

  1. Log into user account on: web ui, android, and iOS.
  2. From the web ui, create a new item in the user's vault.
  3. From the android app, verify the new item appears in the vault (via droid push).
  4. From the iOS app, verify the new item FAILS to appear in the vault (via APNS).
  5. From the iOS app, perform a 'Sync Now' via: Settings/Other/Sync Now.
  6. From the iOS app, verify the new item now appears in the vault (via excplicit web sync call).

Expected Result

Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client.
Adding a new item to a user's vault from the web ui, triggers a push notification for an iOS client.

Actual Result

Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client.
Adding a new item to a user's vault from the web ui, DOES NOT trigger a push notification for an iOS client.

Logs

From my vaultwarden container log (via standard out):


[2024-09-27 20:32:51.788][hyper_util::client::legacy::connect::http][DEBUG] connecting to 151.101.129.91:443
[2024-09-27 20:32:51.795][hyper_util::client::legacy::connect::http][DEBUG] connected to 151.101.129.91:443
[2024-09-27 20:32:51.813][h2::client][DEBUG] binding client connection
[2024-09-27 20:32:51.814][h2::client][DEBUG] client connection bound
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 }
[2024-09-27 20:32:51.814][h2::proto::connection][DEBUG] Connection; peer=Client
[2024-09-27 20:32:51.814][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", push.bitwarden.com)
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 }
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) }
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Data { stream_id: StreamId(1), flags: (0x1: END_STREAM) }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x0), max_concurrent_streams: 100 }
[2024-09-27 20:32:51.821][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x1: ACK) }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=WindowUpdate { stream_id: StreamId(0), size_increment: 16711681 }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x1: ACK) }
[2024-09-27 20:32:51.821][h2::proto::settings][DEBUG] received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 }
[2024-09-27 20:32:51.845][h2::codec::framed_read][DEBUG] received frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) }
[2024-09-27 20:32:51.846][response][INFO] (put_cipher) PUT /api/ciphers/<uuid> => 200 OK
[2024-09-27 20:32:52.130][request][INFO] GET /api/ciphers/d8b0da69-0dc7-4f6b-8678-659a1f4c3b35
[2024-09-27 20:32:52.130][response][INFO] (get_cipher) GET /api/ciphers/<uuid> => 200 OK
[2024-09-27 20:32:52.152][request][INFO] GET /api/config/
[2024-09-27 20:32:52.152][response][INFO] (config) GET /api/config => 200 OK

Screenshots or Videos

No response

Additional Context

Automatic sync works well between web ui clients, indicating the websocket connection works for connected clients.
Automatic sync works well for the droid app, indicating that push notifications are successfully conveyed to bitwarden's push brokering service.
However, no push notifications are received (or acted on) by the Bitwarden iOS app instance.
Immediately following a failed push (iOS app not updating with changes made to user vault from android or web), I was able to successfully exchange text iMessages between the iOS device under test and another iphone, indicating that the iOS device under test has a viable client websocket connection to the APNS gateway.

As well. I'm seeing the same failing Bitwarden push update for the iOS device under test, while on both Wifi and cell service networks. While the manual sync (of the iOS app) works as expected from both networks.

Also. I have renewed the installation id and key (needed for push), deleted the user, and deleted and reinstalled the Bitwarden iOS app... several times now, while reading through every closed and open GH issue about push and iOS problems.
I've even torn down everything, and stood up each piece (container, client, and user) from new.
As well. tried the deauth/delete/recreate method that I found in a similar issue. But, that does NOT resolve the iOS push problem, either.

After reading all the open and closed issues about push notification problems on iOS, and trying what each has, I still cannot get iOS push notifications to work.
But, Android push and web-ui sync (via websocket) both work fine through each iteration.

Any ideas?

Thanks,

Lee

Originally created by @LeeWhite187 on GitHub. ### Vaultwarden Support String ### Your environment (Generated via diagnostics page) * Vaultwarden version: v1.32.0 * Web-vault version: v2024.6.2b * OS/Arch: linux/x86_64 * Running within a container: true (Base: Debian) * Environment settings overridden: true * Uses a reverse proxy: true * IP Header check: true (X-Real-IP) * Internet access: true * Internet access via a proxy: false * DNS Check: true * Browser/Server Time Check: true * Server/NTP Time Check: true * Domain Configuration Check: true * HTTPS Check: true * Database type: SQLite * Database version: 3.46.0 * Clients used: * Reverse proxy and version: * Other relevant information: ### Config (Generated via diagnostics page) <details><summary>Show Running Config</summary> **Environment settings which are overridden:** DOMAIN, ADMIN_TOKEN ```json { "_duo_akey": null, "_enable_duo": true, "_enable_email_2fa": true, "_enable_smtp": true, "_enable_yubico": true, "_icon_service_csp": "", "_icon_service_url": "", "_ip_header_enabled": true, "_max_note_size": 10000, "_smtp_img_src": "cid:", "admin_ratelimit_max_burst": 3, "admin_ratelimit_seconds": 300, "admin_session_lifetime": 20, "admin_token": "***", "allowed_iframe_ancestors": "", "attachments_folder": "data/attachments", "auth_request_purge_schedule": "30 * * * * *", "authenticator_disable_time_drift": false, "data_folder": "data", "database_conn_init": "", "database_max_conns": 10, "database_timeout": 30, "database_url": "***************", "db_connection_retries": 15, "disable_2fa_remember": false, "disable_admin_token": false, "disable_icon_download": false, "domain": "*****://**********************", "domain_origin": "*****://**********************", "domain_path": "", "domain_set": true, "duo_context_purge_schedule": "30 * * * * *", "duo_host": null, "duo_ikey": null, "duo_skey": null, "duo_use_iframe": false, "email_2fa_auto_fallback": false, "email_2fa_enforce_on_verified_invite": false, "email_attempts_limit": 3, "email_change_allowed": true, "email_expiration_time": 600, "email_token_size": 6, "emergency_access_allowed": true, "emergency_notification_reminder_schedule": "0 3 * * * *", "emergency_request_timeout_schedule": "0 7 * * * *", "enable_db_wal": true, "enable_websocket": true, "event_cleanup_schedule": "0 10 0 * * *", "events_days_retain": null, "experimental_client_feature_flags": "fido2-vault-credentials", "extended_logging": true, "helo_name": null, "hibp_api_key": null, "http_request_block_non_global_ips": true, "http_request_block_regex": null, "icon_blacklist_non_global_ips": true, "icon_blacklist_regex": null, "icon_cache_folder": "data/icon_cache", "icon_cache_negttl": 259200, "icon_cache_ttl": 2592000, "icon_download_timeout": 10, "icon_redirect_code": 302, "icon_service": "internal", "incomplete_2fa_schedule": "30 * * * * *", "incomplete_2fa_time_limit": 3, "increase_note_size_limit": false, "invitation_expiration_hours": 120, "invitation_org_name": "Vaultwarden", "invitations_allowed": true, "ip_header": "X-Real-IP", "job_poll_interval_ms": 30000, "log_file": null, "log_level": "debug", "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f", "login_ratelimit_max_burst": 10, "login_ratelimit_seconds": 60, "org_attachment_limit": null, "org_creation_users": "", "org_events_enabled": false, "org_groups_enabled": false, "password_hints_allowed": true, "password_iterations": 600000, "push_enabled": true, "push_identity_uri": "https://identity.bitwarden.com", "push_installation_id": "***", "push_installation_key": "***", "push_relay_uri": "https://push.bitwarden.com", "reload_templates": false, "require_device_email": false, "rsa_key_filename": "data/rsa_key", "send_purge_schedule": "0 5 * * * *", "sendmail_command": null, "sends_allowed": true, "sends_folder": "data/sends", "show_password_hint": false, "signups_allowed": false, "signups_domains_whitelist": "", "signups_verify": false, "signups_verify_resend_limit": 6, "signups_verify_resend_time": 3600, "smtp_accept_invalid_certs": false, "smtp_accept_invalid_hostnames": false, "smtp_auth_mechanism": null, "smtp_debug": false, "smtp_embed_images": true, "smtp_explicit_tls": null, "smtp_from": "*****************************", "smtp_from_name": "Vaultwarden", "smtp_host": "******************", "smtp_password": "***", "smtp_port": 587, "smtp_security": "starttls", "smtp_ssl": null, "smtp_timeout": 15, "smtp_username": "*****************************", "templates_folder": "data/templates", "tmp_folder": "data/tmp", "trash_auto_delete_days": null, "trash_purge_schedule": "0 5 0 * * *", "use_sendmail": false, "use_syslog": false, "user_attachment_limit": null, "user_send_limit": null, "web_vault_enabled": true, "web_vault_folder": "web-vault/", "yubico_client_id": null, "yubico_secret_key": null, "yubico_server": null } ``` </details> ### Vaultwarden Build Version 1.32.0 ### Deployment method Official Container Image ### Custom deployment method self-hosted vaultwarden Running behind an nginx proxy, following the several examples in the guide, with websocket (web ui sync) working well for connected clients. ### Reverse Proxy nginx/1.18.0 (Ubuntu) ### Host/Server Operating System Linux ### Operating System Version Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-72-generic x86_64) ### Clients iOS ### Client Version Bitwarden app version: 2024.9.2, on iOS 16.1.1 ### Steps To Reproduce 1. Log into user account on: web ui, android, and iOS. 2. From the web ui, create a new item in the user's vault. 3. From the android app, verify the new item appears in the vault (via droid push). 4. From the iOS app, verify the new item FAILS to appear in the vault (via APNS). 5. From the iOS app, perform a 'Sync Now' via: Settings/Other/Sync Now. 6. From the iOS app, verify the new item now appears in the vault (via excplicit web sync call). ### Expected Result Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, triggers a push notification for an iOS client. ### Actual Result Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, DOES NOT trigger a push notification for an iOS client. ### Logs ```text From my vaultwarden container log (via standard out): [2024-09-27 20:32:51.788][hyper_util::client::legacy::connect::http][DEBUG] connecting to 151.101.129.91:443 [2024-09-27 20:32:51.795][hyper_util::client::legacy::connect::http][DEBUG] connected to 151.101.129.91:443 [2024-09-27 20:32:51.813][h2::client][DEBUG] binding client connection [2024-09-27 20:32:51.814][h2::client][DEBUG] client connection bound [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 } [2024-09-27 20:32:51.814][h2::proto::connection][DEBUG] Connection; peer=Client [2024-09-27 20:32:51.814][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", push.bitwarden.com) [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 } [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) } [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Data { stream_id: StreamId(1), flags: (0x1: END_STREAM) } [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x0), max_concurrent_streams: 100 } [2024-09-27 20:32:51.821][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x1: ACK) } [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=WindowUpdate { stream_id: StreamId(0), size_increment: 16711681 } [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x1: ACK) } [2024-09-27 20:32:51.821][h2::proto::settings][DEBUG] received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 } [2024-09-27 20:32:51.845][h2::codec::framed_read][DEBUG] received frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } [2024-09-27 20:32:51.846][response][INFO] (put_cipher) PUT /api/ciphers/<uuid> => 200 OK [2024-09-27 20:32:52.130][request][INFO] GET /api/ciphers/d8b0da69-0dc7-4f6b-8678-659a1f4c3b35 [2024-09-27 20:32:52.130][response][INFO] (get_cipher) GET /api/ciphers/<uuid> => 200 OK [2024-09-27 20:32:52.152][request][INFO] GET /api/config/ [2024-09-27 20:32:52.152][response][INFO] (config) GET /api/config => 200 OK ``` ### Screenshots or Videos _No response_ ### Additional Context Automatic sync works well between web ui clients, indicating the websocket connection works for connected clients. Automatic sync works well for the droid app, indicating that push notifications are successfully conveyed to bitwarden's push brokering service. However, no push notifications are received (or acted on) by the Bitwarden iOS app instance. Immediately following a failed push (iOS app not updating with changes made to user vault from android or web), I was able to successfully exchange text iMessages between the iOS device under test and another iphone, indicating that the iOS device under test has a viable client websocket connection to the APNS gateway. As well. I'm seeing the same failing Bitwarden push update for the iOS device under test, while on both Wifi and cell service networks. While the manual sync (of the iOS app) works as expected from both networks. Also. I have renewed the installation id and key (needed for push), deleted the user, and deleted and reinstalled the Bitwarden iOS app... several times now, while reading through every closed and open GH issue about push and iOS problems. I've even torn down everything, and stood up each piece (container, client, and user) from new. As well. tried the deauth/delete/recreate method that I found in a similar issue. But, that does NOT resolve the iOS push problem, either. After reading all the open and closed issues about push notification problems on iOS, and trying what each has, I still cannot get iOS push notifications to work. But, Android push and web-ui sync (via websocket) both work fine through each iteration. Any ideas? Thanks, Lee
OVERLORD added the bug label 2025-10-09 16:25:23 +03:00
Author
Owner

@BlackDex commented on GitHub:

As this is not a Vaultwarden specific issue, but more a Bitwarden issue with the new clients I'm going to move this to discussions.

@BlackDex commented on GitHub: As this is not a Vaultwarden specific issue, but more a Bitwarden issue with the new clients I'm going to move this to discussions.
Author
Owner

@LeeWhite187 commented on GitHub:

btw. Let me know if there's any effort underway to create a VaultWarden-specific IOS/droid app. I'd be inclined to help.

@LeeWhite187 commented on GitHub: btw. Let me know if there's any effort underway to create a VaultWarden-specific IOS/droid app. I'd be inclined to help.
Author
Owner

@BlackDex commented on GitHub:

There are several Bitwarden compatibel apps already. I do not think this project has the time to also take an effort on that part.

@BlackDex commented on GitHub: There are several Bitwarden compatibel apps already. I do not think this project has the time to also take an effort on that part.
Author
Owner

@Fillup99999 commented on GitHub:

Vaultwarden Support String

Your environment (Generated via diagnostics page)

  • Vaultwarden version: v1.32.0
  • Web-vault version: v2024.6.2b
  • OS/Arch: linux/x86_64
  • Running within a container: true (Base: Debian)
  • Environment settings overridden: true
  • Uses a reverse proxy: true
  • IP Header check: true (X-Real-IP)
  • Internet access: true
  • Internet access via a proxy: false
  • DNS Check: true
  • Browser/Server Time Check: true
  • Server/NTP Time Check: true
  • Domain Configuration Check: true
  • HTTPS Check: true
  • Database type: SQLite
  • Database version: 3.46.0
  • Clients used:
  • Reverse proxy and version:
  • Other relevant information:

Config (Generated via diagnostics page)

Show Running Config

Vaultwarden Build Version

1.32.0

Deployment method

Official Container Image

Custom deployment method

self-hosted vaultwarden Running behind an nginx proxy, following the several examples in the guide, with websocket (web ui sync) working well for connected clients.

Reverse Proxy

nginx/1.18.0 (Ubuntu)

Host/Server Operating System

Linux

Operating System Version

Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-72-generic x86_64)

Clients

iOS

Client Version

Bitwarden app version: 2024.9.2, on iOS 16.1.1

Steps To Reproduce

  1. Log into user account on: web ui, android, and iOS.
  2. From the web ui, create a new item in the user's vault.
  3. From the android app, verify the new item appears in the vault (via droid push).
  4. From the iOS app, verify the new item FAILS to appear in the vault (via APNS).
  5. From the iOS app, perform a 'Sync Now' via: Settings/Other/Sync Now.
  6. From the iOS app, verify the new item now appears in the vault (via excplicit web sync call).

Expected Result

Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, triggers a push notification for an iOS client.

Actual Result

Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, DOES NOT trigger a push notification for an iOS client.

Logs

From my vaultwarden container log (via standard out):


[2024-09-27 20:32:51.788][hyper_util::client::legacy::connect::http][DEBUG] connecting to 151.101.129.91:443
[2024-09-27 20:32:51.795][hyper_util::client::legacy::connect::http][DEBUG] connected to 151.101.129.91:443
[2024-09-27 20:32:51.813][h2::client][DEBUG] binding client connection
[2024-09-27 20:32:51.814][h2::client][DEBUG] client connection bound
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 }
[2024-09-27 20:32:51.814][h2::proto::connection][DEBUG] Connection; peer=Client
[2024-09-27 20:32:51.814][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", push.bitwarden.com)
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 }
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) }
[2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Data { stream_id: StreamId(1), flags: (0x1: END_STREAM) }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x0), max_concurrent_streams: 100 }
[2024-09-27 20:32:51.821][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x1: ACK) }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=WindowUpdate { stream_id: StreamId(0), size_increment: 16711681 }
[2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x1: ACK) }
[2024-09-27 20:32:51.821][h2::proto::settings][DEBUG] received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 }
[2024-09-27 20:32:51.845][h2::codec::framed_read][DEBUG] received frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) }
[2024-09-27 20:32:51.846][response][INFO] (put_cipher) PUT /api/ciphers/<uuid> => 200 OK
[2024-09-27 20:32:52.130][request][INFO] GET /api/ciphers/d8b0da69-0dc7-4f6b-8678-659a1f4c3b35
[2024-09-27 20:32:52.130][response][INFO] (get_cipher) GET /api/ciphers/<uuid> => 200 OK
[2024-09-27 20:32:52.152][request][INFO] GET /api/config/
[2024-09-27 20:32:52.152][response][INFO] (config) GET /api/config => 200 OK

Screenshots or Videos

No response

Additional Context

Automatic sync works well between web ui clients, indicating the websocket connection works for connected clients. Automatic sync works well for the droid app, indicating that push notifications are successfully conveyed to bitwarden's push brokering service. However, no push notifications are received (or acted on) by the Bitwarden iOS app instance. Immediately following a failed push (iOS app not updating with changes made to user vault from android or web), I was able to successfully exchange text iMessages between the iOS device under test and another iphone, indicating that the iOS device under test has a viable client websocket connection to the APNS gateway.

As well. I'm seeing the same failing Bitwarden push update for the iOS device under test, while on both Wifi and cell service networks. While the manual sync (of the iOS app) works as expected from both networks.

Also. I have renewed the installation id and key (needed for push), deleted the user, and deleted and reinstalled the Bitwarden iOS app... several times now, while reading through every closed and open GH issue about push and iOS problems. I've even torn down everything, and stood up each piece (container, client, and user) from new. As well. tried the deauth/delete/recreate method that I found in a similar issue. But, that does NOT resolve the iOS push problem, either.

After reading all the open and closed issues about push notification problems on iOS, and trying what each has, I still cannot get iOS push notifications to work. But, Android push and web-ui sync (via websocket) both work fine through each iteration.

Any ideas?

Thanks,

Lee

@LeeWhite187 don't dox yourself, I'm hoping you replaced that IP with a fake one.

@Fillup99999 commented on GitHub: > ### Vaultwarden Support String > ### Your environment (Generated via diagnostics page) > * Vaultwarden version: v1.32.0 > * Web-vault version: v2024.6.2b > * OS/Arch: linux/x86_64 > * Running within a container: true (Base: Debian) > * Environment settings overridden: true > * Uses a reverse proxy: true > * IP Header check: true (X-Real-IP) > * Internet access: true > * Internet access via a proxy: false > * DNS Check: true > * Browser/Server Time Check: true > * Server/NTP Time Check: true > * Domain Configuration Check: true > * HTTPS Check: true > * Database type: SQLite > * Database version: 3.46.0 > * Clients used: > * Reverse proxy and version: > * Other relevant information: > > ### Config (Generated via diagnostics page) > Show Running Config > ### Vaultwarden Build Version > 1.32.0 > > ### Deployment method > Official Container Image > > ### Custom deployment method > self-hosted vaultwarden Running behind an nginx proxy, following the several examples in the guide, with websocket (web ui sync) working well for connected clients. > > ### Reverse Proxy > nginx/1.18.0 (Ubuntu) > > ### Host/Server Operating System > Linux > > ### Operating System Version > Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-72-generic x86_64) > > ### Clients > iOS > > ### Client Version > Bitwarden app version: 2024.9.2, on iOS 16.1.1 > > ### Steps To Reproduce > 1. Log into user account on: web ui, android, and iOS. > 2. From the web ui, create a new item in the user's vault. > 3. From the android app, verify the new item appears in the vault (via droid push). > 4. From the iOS app, verify the new item FAILS to appear in the vault (via APNS). > 5. From the iOS app, perform a 'Sync Now' via: Settings/Other/Sync Now. > 6. From the iOS app, verify the new item now appears in the vault (via excplicit web sync call). > > ### Expected Result > Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, triggers a push notification for an iOS client. > > ### Actual Result > Adding a new item to a user's vault from the web ui, triggers a push notification for a droid client. Adding a new item to a user's vault from the web ui, DOES NOT trigger a push notification for an iOS client. > > ### Logs > ``` > From my vaultwarden container log (via standard out): > > > [2024-09-27 20:32:51.788][hyper_util::client::legacy::connect::http][DEBUG] connecting to 151.101.129.91:443 > [2024-09-27 20:32:51.795][hyper_util::client::legacy::connect::http][DEBUG] connected to 151.101.129.91:443 > [2024-09-27 20:32:51.813][h2::client][DEBUG] binding client connection > [2024-09-27 20:32:51.814][h2::client][DEBUG] client connection bound > [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 } > [2024-09-27 20:32:51.814][h2::proto::connection][DEBUG] Connection; peer=Client > [2024-09-27 20:32:51.814][hyper_util::client::legacy::pool][DEBUG] pooling idle connection for ("https", push.bitwarden.com) > [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 } > [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) } > [2024-09-27 20:32:51.814][h2::codec::framed_write][DEBUG] send frame=Data { stream_id: StreamId(1), flags: (0x1: END_STREAM) } > [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x0), max_concurrent_streams: 100 } > [2024-09-27 20:32:51.821][h2::codec::framed_write][DEBUG] send frame=Settings { flags: (0x1: ACK) } > [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=WindowUpdate { stream_id: StreamId(0), size_increment: 16711681 } > [2024-09-27 20:32:51.821][h2::codec::framed_read][DEBUG] received frame=Settings { flags: (0x1: ACK) } > [2024-09-27 20:32:51.821][h2::proto::settings][DEBUG] received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384, max_header_list_size: 16384 } > [2024-09-27 20:32:51.845][h2::codec::framed_read][DEBUG] received frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } > [2024-09-27 20:32:51.846][response][INFO] (put_cipher) PUT /api/ciphers/<uuid> => 200 OK > [2024-09-27 20:32:52.130][request][INFO] GET /api/ciphers/d8b0da69-0dc7-4f6b-8678-659a1f4c3b35 > [2024-09-27 20:32:52.130][response][INFO] (get_cipher) GET /api/ciphers/<uuid> => 200 OK > [2024-09-27 20:32:52.152][request][INFO] GET /api/config/ > [2024-09-27 20:32:52.152][response][INFO] (config) GET /api/config => 200 OK > ``` > > ### Screenshots or Videos > _No response_ > > ### Additional Context > Automatic sync works well between web ui clients, indicating the websocket connection works for connected clients. Automatic sync works well for the droid app, indicating that push notifications are successfully conveyed to bitwarden's push brokering service. However, no push notifications are received (or acted on) by the Bitwarden iOS app instance. Immediately following a failed push (iOS app not updating with changes made to user vault from android or web), I was able to successfully exchange text iMessages between the iOS device under test and another iphone, indicating that the iOS device under test has a viable client websocket connection to the APNS gateway. > > As well. I'm seeing the same failing Bitwarden push update for the iOS device under test, while on both Wifi and cell service networks. While the manual sync (of the iOS app) works as expected from both networks. > > Also. I have renewed the installation id and key (needed for push), deleted the user, and deleted and reinstalled the Bitwarden iOS app... several times now, while reading through every closed and open GH issue about push and iOS problems. I've even torn down everything, and stood up each piece (container, client, and user) from new. As well. tried the deauth/delete/recreate method that I found in a similar issue. But, that does NOT resolve the iOS push problem, either. > > After reading all the open and closed issues about push notification problems on iOS, and trying what each has, I still cannot get iOS push notifications to work. But, Android push and web-ui sync (via websocket) both work fine through each iteration. > > Any ideas? > > Thanks, > > Lee @LeeWhite187 don't dox yourself, I'm hoping you replaced that IP with a fake one.
Author
Owner

@LeeWhite187 commented on GitHub:

And in case it's asked, I did answer both popups to allow push notifications, on the iOS device, each time I installed the app to test notifications.

@LeeWhite187 commented on GitHub: And in case it's asked, I did answer both popups to allow push notifications, on the iOS device, each time I installed the app to test notifications.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/vaultwarden#366