config-plugin-react-native-intercom icon indicating copy to clipboard operation
config-plugin-react-native-intercom copied to clipboard

Android notifications not working - React Native `0.72.5`

Open mckaymichaelis opened this issue 2 years ago • 2 comments

"react-native": "0.72.5", "expo": "^49.0.0", "@intercom/intercom-react-native": "4.0.1", "config-plugin-react-native-intercom": "^1.10.1",

I have been unable to get Android notifications working for Intercom, and finally found the issue today.

In this library's withIntercomAndroid.js, the code for inserting the Firebase implementation in the build.gradle is the following:

const firebaseImp = `implementation 'com.google.firebase:firebase-messaging:23.1.+'`;
if (!config.modResults.contents.includes(firebaseImp)) {
    const anchor = `implementation "com.facebook.react:react-native:+"  // From node_modules`;
    config.modResults.contents = config.modResults.contents.replace(anchor, `${anchor} ${firebaseImp}`);
}`

However, in my generated build.gradle, the

implementation "com.facebook.react:react-native:+"  // From node_modules

line is no where to be found, so the replace fails and the firebase implementation never gets added.

In RN 0.71 and beyond, it seems that React Native Gradle Plugin is being used and instead of the above line, inserts this line in the build.gradle instead:

implementation("com.facebook.react:react-android")

So, if I change the anchor line above to this:

const anchor = `implementation("com.facebook.react:react-android")`;

Then the Firebase implementation gets inserted and notifications work like they should.

What do you guys think would be the best way to fix this? Should we search for either of the anchors and add the firebase line if either are found? Use regex? Just hoping I can avoid forking the repository and hosting it myself :)

Thanks!

mckaymichaelis avatar Oct 23 '23 17:10 mckaymichaelis

Any update here?

mckaymichaelis avatar Dec 07 '23 18:12 mckaymichaelis

Hello :wave: :) I've submitted a PR to be tested handling both cases for support of previous versions too

But as we build on Bitrise I'm wondering how to test, so if you can validate my PR works on your side too it would be appreciated :)

TomBerriot avatar Feb 22 '24 14:02 TomBerriot