Troubleshooting
In this page you'll learn what are the most common mistakes when implementing the Notificare library for Android.
Enabling debug logging
There are times when the default logging level is not sufficient to diagnose problems. You can enable debug logging by adding the following to the AndroidManifest.xml
.
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<meta-data
android:name="re.notifica.debug_logging_enabled"
android:value="true" />
</application>
</manifest>
Managing application state
Important application data, such as current device information and push state, is stored in shared preferences.
It's essential to avoid manually removing these properties or files, as doing so can have unintended side effects, essentially resetting your application to a partially fresh state.
Instead, we recommended using the appropriate functions that align with your specific use-case, such as disableRemoteNotifications()
or unlaunch()
.
Misplaced App Keys
When implementing Notificare, the library configuration file (located at app/notificare-services.json
) must contain the Application ID
, Application Key
and the Application Secret
.
In Google Cloud Messaging/Firebase Cloud Messaging there is no separation between development and production environment, so you don't necessarily need to create applications in Notificare for both environments, although we strongly recommend that you have an application for each environment.
Please read more about the configuration file here.
GCM/FCM Errors
A very common mistake it to confuse the SenderID
with Server Key
. There's a clear distinction between the two. They both can be found in the Firebase's Developer Console, like shown here. The SenderID
is included in the google-services.json
file added by Firebase to your app like explained here.
The Server Key
is generated by Firebase and uploaded to Notificare, like shown here. This will enable our platform to send notifications to your app.
Missing Dependencies / Permissions
One of the most common mistakes when implementing Notificare are missing permissions in your AndroidManifest.xml
file.
Some of these permissions are required for the library to work. In most cases this will originate crashes when building your application.
Necessary permissions are automatically added by the various Notificare modules, so make sure you include all the dependencies your application will need. You can read more about the dependencies here.
Fingerprints in HMS AppGallery
For HMS to work it is important to set the necessary SHA-256 fingerprints for any environment that you will run the app in, including any development machine that you want to run a debug build from. These fingerprints can be found in your debug.keystore:
/> keytool -list -v -keystore ~/.android/debug.keystore
You can read more about setting up HMS here.
Google Maps key in Android
Notificare will require access to the Android Maps API in order to display Google Maps. These maps can be included in the content of a notification. Most common mistake when using Android Maps is to forget to get access to the API and to generate an Android Key. You can read more about creating an Android Maps V2 Key, here.
Application crash during start-up
Fatal Exception: java.lang.RuntimeException: Unable to get provider re.notifica.NotificareConfigurationProvider:
java.lang.IllegalStateException: No platform dependencies have been detected. Please include one of the platform-specific packages.
There are times when the exception above occurs. Typically, it's due to a misconfiguration.
- Ensure you include the appropriate peer dependencies —
notificare-[package]-gms
for Google Play Services andnotificare-[package]-hms
for Huawei Mobile Services. - Ensure you run your application in a compatible emulator. Since not all images support Google Play, running the app in such emulators will cause the exception since the device doesn't have the necessary capabilities.
When choosing an emulator image, select one that looks like the following.
Known Issue with Moshi in Gradle 8.0
We are aware of an issue with this dependency when built with the latest Android Studio, which includes Gradle 8.0 where R8 is enabled by default. Basically, until they are able to provide a better solution, you need to add the following Proguard rule to your app:
-keep,allowobfuscation,allowshrinking class com.squareup.moshi.JsonAdapter