Skip to main content
Solved

Push notification for React Native Android while app is closed

  • October 15, 2024
  • 4 replies
  • 204 views

Forum|alt.badge.img

Hello,
I have Klaviyo integrated in my react native app with `klaviyo-react-native-sdk`. When I’m sending test notifications from campaign it works well with iOS version. But there is one issue on Android version when app is closed.
Notifications on Android are not displayed when app is closed probably because they don’t include ‘notification’ payload (only ‘data’) so Android won’t show it. I can’t see any option in Klaviyo dashboard to set custom payload for push notifications. Is it somehow manageable?

(I can display notification properly while app is in the background or in the foreground but not when it’s closed)

Thank you

Best answer by xcapistr

I checked the received notification objects using `react-native-firebase/messaging`.
Here is a comparison of Klaviyo and Firebase notifications:

{
  "klaviyo": {
    "sentTime": 1738838511431,
    "data": {
      "title": "Klaviyo test",
      "body": "This notification has been sent from Klaviyo",
      "notification_tag": "2025-02-06T10:41:51.262325+00:00",
      "_k": "{\"Push Platform\": \"android\"}"
    },
    "messageId": "0:1738838511444799%18965de2f9fd7ecd",
    "ttl": 2419200,
    "from": "514654180158"
  },
  "firebase": {
    "notification": {
      "android": {},
      "body": "This notification has been sent from Firebase",
      "title": "Firebase test"
    },
    "sentTime": 1738838603649,
    "data": {},
    "from": "514654180158",
    "messageId": "0:1738838603666709%18965de218965de2",
    "ttl": 2419200,
    "collapseKey": "com.ascension.app.staging"
  }
}


According docs it looks like Klaviyo sends data message and firebase sends notification message. That might be the reason why Klaviyo notifications don’t work when app is closed as only the client app is responsible for processing these messages.

View original
Did this topic or the replies in the thread help you find an answer to your question?

4 replies

stephen.trumble
Community Manager
Forum|alt.badge.img+60

Hey @xcapistr 

Thanks for reaching out for help with this! @Brett_Gatsby or @DavidV would either of you know if this is possible for android?


Forum|alt.badge.img+31
  • Partner
  • 252 replies
  • October 22, 2024

Hello @xcapistr 

 

Trying removing android:exported="false" from this code 

 <service android:name="your.package.name.YourPushService" android:exported="false">            <intent-filter>                <action android:name="com.google.firebase.MESSAGING_EVENT" />            </intent-filter>        </service>

Forum|alt.badge.img
  • Author
  • Contributor I
  • 2 replies
  • October 23, 2024

Thanks for helping @Maxbuzz 
I guess the code is from `AndroidManifest.xml` but I don’t have anything like that in it (no `<service>` or `android:exported=false` near messaging service).

App is managed by Expo and in our team we would like to avoid changing native code.

Also notifications sent from the Firebase console or our backend service are displayed correctly whether the app is closed or not. 


Forum|alt.badge.img
  • Author
  • Contributor I
  • 2 replies
  • Answer
  • February 6, 2025

I checked the received notification objects using `react-native-firebase/messaging`.
Here is a comparison of Klaviyo and Firebase notifications:

{
  "klaviyo": {
    "sentTime": 1738838511431,
    "data": {
      "title": "Klaviyo test",
      "body": "This notification has been sent from Klaviyo",
      "notification_tag": "2025-02-06T10:41:51.262325+00:00",
      "_k": "{\"Push Platform\": \"android\"}"
    },
    "messageId": "0:1738838511444799%18965de2f9fd7ecd",
    "ttl": 2419200,
    "from": "514654180158"
  },
  "firebase": {
    "notification": {
      "android": {},
      "body": "This notification has been sent from Firebase",
      "title": "Firebase test"
    },
    "sentTime": 1738838603649,
    "data": {},
    "from": "514654180158",
    "messageId": "0:1738838603666709%18965de218965de2",
    "ttl": 2419200,
    "collapseKey": "com.ascension.app.staging"
  }
}


According docs it looks like Klaviyo sends data message and firebase sends notification message. That might be the reason why Klaviyo notifications don’t work when app is closed as only the client app is responsible for processing these messages.