SDK Integration
Onboarding Checklist: Android
Please find the Onboarding Checklist for iOS and Android below. Follow the titles in the checklist to ensure you have completed each essential step in your onboarding process with Netmera.
Step 1: Select a Platform
Navigate to Developers > Netmera Onboarding.
Select Android and click Start to proceed.

Step 2: Create a Firebase Configuration
Netmera uses Firebase Cloud Messaging (FCM) for delivering push notifications.
Go to the Firebase Developers Console and create a new project.
Generate a new Private Key (JSON file) for your project.
Upload the JSON file you downloaded from Firebase Cloud Messaging to the
Project > app-level root
directory
.

Choose one of the four options: Node.js, Java, Python, and Go. The choice of option does not require any action. Simply click the 'Generate New Private Key' button to download the file. No further selections are needed.

Upload this file in Netmera Panel > Developers > Netmera Onboarding > Android > Step 2: Create A Firebase Configuration > FCM Service Account Key.

Step 3: Select a Target SDK
Select the SDK for your application development framework as Native Android.

Step 4: Integrate Netmera SDK
Important Notes on SDK API Key:
Do not use the API key from a test panel in production.
Each panel has a unique API key, and using the wrong one can result in data misdirection or errors.
To obtain your SDK API Key:
Go to the Netmera Panel.
Navigate to Developer > API > SDK API Key.
Copy your SDK API Key from this section.
Standard Gradle
If your project is using Standard Gradle:
Add the following snippets to integrate the Netmera SDK into your project.
In this step, only copy the url specified below and add it to maven.
buildscript {
repositories {
google()
maven {url 'https://developer.huawei.com/repo/'} // only include for HMS copy the url and add it to maven
}
dependencies {
classpath 'com.android.tools.build:gradle:{your_project_android_tools_version}'
classpath 'com.google.gms:google-services:{your_google_services_version}'
classpath 'com.huawei.agconnect:agcp:{your_agcp_version}' // only include for HMS
}
}
allprojects {
repositories {
google()
maven {url 'https://developer.huawei.com/repo/'} // only include for HMS copy the url and add it to maven
maven { url "https://release.netmera.com/release/android" }
}
}
Gradle Version Catalogs
If your project is using Gradle Version Catalogs:
Add the following snippets to integrate the Netmera SDK into your project.
Kotlin
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.jetbrainsKotlinAndroid) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.androidLibrary) apply false
}
If you want to integrate Huawei Mobile Services (HMS), add the following configuration to your build.gradle
file before plugins
. Following part is only for Huawei integration.
// This part is only for Huawei integration
buildscript {
val agpVersion = "YOUR_PROJECT_AGP_VERSION"
repositories {
maven {
url = uri("https://developer.huawei.com/repo/")
}
}
dependencies {
classpath("com.huawei.agconnect:agcp:your_agcp_version")
}
}
plugins {
...
}
For more information, visit the following link: Huawei AppGallery Connect Guide.
Note: Check your libs.versions.toml
file:
This file is usually located within the
gradle
folder in the root directory of your project.Review how the relevant plugin is defined.
Groovy
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.jetbrainsKotlinAndroid) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.androidLibrary) apply false
}
If you want to integrate Huawei Mobile Services (HMS), add the following configuration to your build.gradle
file before plugins
. Following part is only for Huawei integration.
// This part is only for Huawei integration
buildscript {
val agpVersion = "YOUR_PROJECT_AGP_VERSION" //
repositories {
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
classpath "com.huawei.agconnect:agcp:your_agcp_version"
}
}
plugins {
...
}
For more information, visit the following link: Huawei AppGallery Connect Guide.
Note: Check your libs.versions.toml
file:
This file is usually located within the
gradle
folder in the root directory of your project.Review how the relevant plugin is defined.
Step 5: Initialize Netmera SDK
Initializing Netmera SDK Android v4.0.0+
Add the following initialization code inside the
onCreate()
method of yourApplication
class.
registerActivityLifecycleCallbacks
method must be called in the Main Threat.
override fun onCreate() {
super.onCreate()
// Must be called on the Main Thread
registerActivityLifecycleCallbacks(NMActivityLifecycleCallbacks(this))
val configBuilder = NetmeraConfiguration.Builder()
.apiKey(apiKey)
.firebaseSenderId(PropertiesUtil.gcmSenderId)
.huaweiSenderId(PropertiesUtil.hmsSenderId) // only include for HMS
.logging(true) // enables logging in logcat
.addProvider(NMFCMProvider())
.addProvider(NMHMSProvider()) // only include for HMS
Netmera.init(configBuilder.build(this))
}
Removed Components in Android SDK v4.0.0+
If you are using Netmera Android SDK version 4.0.0 or later, or performing an SDK update,
Do not include the following lines of code from previous SDK versions when initializing Netmera SDK.
If these lines are already present in your code, please remove them:
// Removed components in SDK 4.0.0
NMInitializer.initializeComponents(this)
AppInitializer.getInstance(this).initializeComponent(NMFCMProviderInitializer::class.java)
AppInitializer.getInstance(this).initializeComponent(NMHMSProviderInitializer::class.java)
Optional: Initialization Callback
To implement the initialization callback:
Add the following code to handle success and failure:
For detailed information, you can visit >Push Callbacks.
Netmera.init(
configBuilder.build(this),
object : NMInitSessionListener {
override fun onSuccess() {
Log.i("NetmeraApp", "Session init completed")
}
override fun onFailure(error: String?) {
Log.e(
"NetmeraApp",
"Error occurred when trying to init session with Netmera. Error::$error"
)
}
}
)
Optional: Enable Logging
To enable logging for debugging, add the following code in the onCreate()
method of your Application
class:
Enable logging:
.logging(true)
Disable logging for production:
When preparing your app for release, set .logging(false)
.logging(false)
Set .logging (false)
while on prod:
Before releasing your app to the store, make sure that .logging
is disabled (set to false
) in the production environment.
Step 6: Android 13 Push Notification Permissions
Android 13 introduced significant changes to how push notification permissions are handled.
Increased User Control: Apps targeting API Level 33 and above now have more control over when and how they request push notification permissions. This allows for a more user-friendly and context-aware permission request experience.
Automatic Permission Requests for Older Apps: For apps targeting API Level 32 and below running on Android 13, the system automatically prompts the user for push notification permission when the app creates its first notification channel.
Impact on Netmera SDK Users:
The Netmera SDK initializes and creates notification channels during the app's startup. Consequently:
On Android 13: For apps targeting API Level 32 and below, this initialization process will trigger the automatic system prompt for push notification permission.
On Android 12 and below: The system generally assumes push notification permission has already been granted.
If you initialize the Netmera SDK at app startup (which is recommended), the system will automatically request push notification permissions on Android 13 devices for apps targeting API Level 32 and below. For devices running Android 12 or earlier, the system assumes permission is already granted.
Push Permission Methods in Netmera SDK
For applications targeting API 33, Netmera SDK offers two key methods for requesting push permission:
Requesting Push Permission
Method:
Netmera.requestNotificationPermissions(this)
Add this method in the
onCreate()
method of yourMainActivity
, belowsuper.onCreate(savedInstanceState)
to request push notification permissions from the user.
Netmera.requestNotificationPermissions(this)
Checking Notification Status
Method:
checkNotificationPermission()
This method allows checking whether the necessary permissions for the application have been obtained.
checkNotificationPermission()
Optional: Email Permission Preferences
In version 3.9.18, the Email Preferences feature allows you to request email permission from users. Use the following method to manage email permission:
fun setEmailPermission(isAllowed: Boolean)
Revoking Email Permission:
To revoke email permission, execute the following code:
Netmera.setEmailPermission(false)
Granting Email Permission:
To grant email permission, execute:
Netmera.setEmailPermission(true)
Optional: Firebase Messaging Service Class
To integrate Netmera’s push notifications alongside Firebase Cloud Messaging (FCM), follow these steps:
Override
onMessageReceived
In your Firebase Messaging Service class, call Netmera's onNetmeraPushMessageReceived
method inside your own onMessageReceived
method.
Handle FCM Token Renewal
When the FCM token is renewed, call the Netmera.onNetmeraNewToken(token)
method below to forward the new token to Netmera. Use the following code to do so:
class PushMessaging : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
if (Netmera.isNetmeraRemoteMessage(remoteMessage)) {
Netmera.onNetmeraPushMessageReceived(remoteMessage)
} else {
// Other operations
}
}
override fun onNewToken(token: String) {
super.onNewToken(token)
Netmera.onNetmeraNewToken(token)
}
}
Push Callbacks
Netmera provides the following push callbacks for better push notification management:
Push Register, Push Receive, Push Open, Push Dismiss, Push Button Click.
For detailed implementation, please refer to the full documentation > Push Callbacks
Android SDK Integration Complete
The Android SDK integration has been successfully completed, and your devices are now set to receive the following types of push notifications via the Netmera Dashboard:
Standard Push Notifications
Interactive Push Notifications
Widgets
Push Notifications with Deeplinks
Warning During App Store Submission:
When submitting your application to the App Store, you might encounter the com.google.android.gms.permission.AD_ID
alert. Here’s how to handle it:
Choose 'Yes' when prompted.
On the subsequent page, make sure the 'analytics' option is selected.
After this, no further additions to the manifest are required; simply merging the manifest will suffice.
Last updated
Was this helpful?