ionic-team / capacitor

Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web โšก๏ธ
https://capacitorjs.com
MIT License
11.76k stars 993 forks source link

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

Closed sertal70 closed 3 years ago

sertal70 commented 3 years ago

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

jcesarmobile commented 3 years ago

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

sertal70 commented 3 years ago

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.

amrtahlawi commented 3 years ago

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.

jl4386 commented 3 years ago

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

Is this also applied to Android?

nchrysis commented 3 years ago

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

Is this also applied to Android?

On my tests for Local Notifications it happens only on iOS. 'localNotificationReceived' event not firing when app is in background on iOS but works on Android.

ionitron-bot[bot] commented 1 year ago

Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Capacitor, please create a new issue and ensure the template is fully filled out.