Reputation: 382
I have three different react-native android apps in a firebase project I use for push notifications. Two of them are working just fine. The third isn't working and I can't figure out what I've done differently.
Here's what I know so far:
I get no error in app number three, but push notifications on android just never happen even though I can see in the log that the function has been triggered to schedule the notification.
These are 3 pretty similar apps and I'm using react-native-push-notification in all of them.
Push notifications on ios are already working in this project.
If I copy and paste content from the google-services.json in either of the two working examples and use it to replace the content of google-services.json in the non-working example then push notifications trigger properly on my android emulator.
The copy and paste trick is not a solution because after running react-native-bundle, attempting to run the app on android will fail because:
What went wrong:
Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name 'com.appNumberThreeName'
Going and manually changing the app name from the name of the app I copied from to the name of the third app will get rid of this error but then I wind up right back where I started. I get no error but the notification just never happens.
It seems to me that I somehow did something different in the firebase console for the third app but I can't figure out what. I enter the project, click the plus sign a the top to add an app, select android, and go through the four steps. Step number four (syncing) never completes for app 3 unless I do the copy and paste trick.
I've tried starting a new project in firebase and adding the app to that one instead and I wind up with the exact same problem.
I have gone through bitbucket to double check all the files I changed in the working examples when I added push notifications to them and to verify that what I've done in the non working project is identical. The only difference is the google-services.json files, which makes me think I did something wrong in the firebase console.
Here are examples of google-services.json files that are working and not working with sensitive info replaced with XXXXX or some wording to indicate which app it's referring to:
1. Working App One
{
"project_info": {
"project_number": "XXXXX",
"firebase_url": "XXXXX",
"project_id": "XXXXX",
"storage_bucket": "XXXXX"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "XXXXX",
"android_client_info": {
"package_name": "appOneName"
}
},
"oauth_client": [
{
"client_id": "XXXXX",
"client_type": 1,
"android_info": {
"package_name": "appOneName",
"certificate_hash": "XXXXX"
}
},
{
"client_id": "XXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXX"
}
}
]
}
}
}
],
"configuration_version": "1"
}
2. Working App Two
{ "project_info": {
"project_number": "XXXXXX",
"firebase_url": "XXXXX",
"project_id": "XXXXX",
"storage_bucket": "XXXXXX" }, "client": [
{
"client_info": {
"mobilesdk_app_id": "XXXXX",
"android_client_info": {
"package_name": "appOneName"
}
},
"oauth_client": [
{
"client_id": "XXXX",
"client_type": 1,
"android_info": {
"package_name": "appOneName",
"certificate_hash": "XXXXXX"
}
},
{
"client_id": "XXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXX"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "XXXXX",
"android_client_info": {
"package_name": "appTwoName"
}
},
"oauth_client": [
{
"client_id": "XXXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXX"
}
}
]
}
}
} ], "configuration_version": "1" }
3. Not Working App Three
{
"project_info": {
"project_number": "XXXXX",
"firebase_url": "XXXXX",
"project_id": "XXXXX",
"storage_bucket": "XXXXX"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "XXXXX",
"android_client_info": {
"package_name": "appThreePackageName"
}
},
"oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundleId",
"app_store_id": "XXXXXX"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "XXXXX",
"android_client_info": {
"package_name": "appOneName"
}
},
"oauth_client": [
{
"client_id": "XXXXX",
"client_type": 1,
"android_info": {
"package_name": "appOneName",
"certificate_hash": "XXXXXX"
}
},
{
"client_id": "XXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXX"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "XXXXXX",
"android_client_info": {
"package_name": "com.test" //just a random extra app I added for testing
}
},
"oauth_client": [
{
"client_id": "XXXXXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXX",
"client_type": 3
},
{
"client_id": "XXXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXXX"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "XXXXXXX",
"android_client_info": {
"package_name": "appTwoName"
}
},
"oauth_client": [
{
"client_id": "XXXXXX",
"client_type": 3
}
],
"api_key": [
{
"current_key": "XXXXXX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "XXXXXX",
"client_type": 3
},
{
"client_id": "XXXXXX",
"client_type": 2,
"ios_info": {
"bundle_id": "appOneBundle",
"app_store_id": "XXXXX"
}
}
]
}
}
}
],
"configuration_version": "1"
}
Any suggestions of what to look into would be welcomed - thanks!
Update: About a day after I first downloaded that problematic google-services.json I logged back into my firebase account, downloaded a new one and used it to replace the old one. After syncing files it's now working. I'm still not sure what caused this problem. Maybe the first download was somehow messed up, or maybe files didn't sync properly the first time. Anyway, I guess I'll leave this question up in case anyone else comes across a similar problem in the future.
Upvotes: 0
Views: 6774
Reputation: 46
Have you found a fix for this yet? I encountered the same problem some days ago. Then I realized the package name or ID in my google-services did not match the package name in Android.Manifest. Make sure com.package.packageName
is the same in Android.Manifest as google-services. It's case sensitive, too.
Upvotes: 3