Capacitor: bug: Push notifications plugin on iOS doesn't work when app is in background

Created on 28 Oct 2020  ·  3Comments  ·  Source: ionic-team/capacitor

Bug Report

On iOS if the app is in background none of the registered callbacks get called when a push notification is sent to the device.

Capacitor Version

💊   Capacitor Doctor  💊 

Latest Dependencies:

  @capacitor/cli: 2.4.2
  @capacitor/core: 2.4.2
  @capacitor/android: 2.4.2
  @capacitor/electron: 2.4.2
  @capacitor/ios: 2.4.2

Installed Dependencies:

  @capacitor/cli 2.4.0
  @capacitor/core 2.4.0
  @capacitor/android 2.4.0
  @capacitor/ios 2.4.0
  @capacitor/electron not installed

[success] Android looking great! 👌
  Found 3 Capacitor plugins for ios:
    @capacitor-community/camera-preview (1.0.4)
    cordova-plugin-audioinput (1.0.2)
    cordova-plugin-email-composer (0.9.2)
[success] iOS looking great! 👌

Platform(s)

Tested on iPhone 7 Plus with iOS 13.5.1

Current Behavior

  1. Launch the app, wait for the home screen to be displayed, then put it in the background
  2. Push a notification to the app
  3. None of the app callbacks get called

Expected Behavior

  1. At least the pushNotificationReceived callback get called

Code Reproduction

Use the example guide to create a demo app, then try to send the following notification payloads (I tried both a "normal" payload and a "background mode" payload, see docs here):

normal payload

{
  "APNS_SANDBOX": {
    "aps":{
      "alert":{
        "title": "A title", 
        "body":"A notification for you"
      },
      "sound":"default"
    },
    "additionalData": "my additional data"
  }
}

background mode payload

{
  "APNS_SANDBOX": {
    "aps":{
      "content-available": 1
    },
    "additionalData": "my additional data"
  }
}

Other Technical Details

npm --version output: 6.13.4

node --version output: v12.16.1

pod --version output (iOS issues only): 1.9.1

Additional Context

ios

Most helpful comment

thank @jcesarmobile for your answer, I'll switch back my app to Cordova push plugin.

I'm in the process to migrate an app from Ionic3+Cordova to Ionic5+Capacitor, at the end of the journey this will result in a mixed Capacitor+Cordova app, a very unpleasant result.

If Capacitor does not implement the "feature parity" toward Cordova and its plugin ecosystem, then the Ionic team should avoid to advertise Capacitor as a Cordova replacement, because it is not.

All 3 comments

pushNotificationReceived is only fired if the app is in foreground, if in background the OS will display the push notification and if you tap it pushNotificationActionPerformed will be called.

Silent push are not supported by Capacitor push plugin

thank @jcesarmobile for your answer, I'll switch back my app to Cordova push plugin.

I'm in the process to migrate an app from Ionic3+Cordova to Ionic5+Capacitor, at the end of the journey this will result in a mixed Capacitor+Cordova app, a very unpleasant result.

If Capacitor does not implement the "feature parity" toward Cordova and its plugin ecosystem, then the Ionic team should avoid to advertise Capacitor as a Cordova replacement, because it is not.

Hello @jcesarmobile Is there a plan to update Capacitor push to support silent push for IOS?
@sertal70 Which plugin do you recommend to use? I'm new to Ionic and I'd appreciate if you could send me a link to cordova push plugin.

Was this page helpful?
0 / 5 - 0 ratings