Android Push Notifications
Push Notifications on Android are sent with the help of the FCM service.
Register and open the project creation window in Firebase.
Click Add project.
Write the name of your project. At this stage, you can also set your own unique project identifier or use the one that Firebase will generate for you automatically.
After creating the project card, create an Android application by clicking on the Android icon.
Register your android package name.
Download the google-services.json file and use it according to the instructions of firebase.
Add firebase dependencies according to the firebase documentation.
Complete the application registration, you will see the project overview section.
Select your application by clicking on it, you will see a gear on the right side, click on it to go to project settings.
Go to the cloud messages section, make sure that the Firebase Cloud Messaging API (V1) is active (if not, activate it).
Go to the general section and copy the value of the Project ID field and paste it into the devtodev web interface.
The Project ID is also available from the Firebase main screen in the project cards. After setting up the application, the card should look like this:
It should have a Project ID and an android icon.
Next, open the push notifications integration settings panel in the application settings section in devtodev service (App → Settings → Push notifications → Push notifications panel). Push edit button (pencil symbol).
You will need to specify the Firebase Project ID and authorize devtodev to send messages and manage messaging subscriptions for your Firebase application. To authorise the application, you must use Google login and password of a user with sufficient access rights to the project on Firebase. After that click Save button.
The Messaging module is available as an AAR (recommended) and JAR library. The library is available in the MavenCentral and GitHub repository.
1. If you use Gradle for the applications build, add mavenCentral()
into gradle.build file of your application and specify the following relationship in dependencies block:
2. To the app manifest add the following:
3. To add a user icon to your push notification and change its color, add the following strings to the manifest file code:
To add a large user icon to your push notifications, add:
Example:
4. After the DTDAnalytics
initializer, add the DTDMessaging
initializer.
Example:
5. Subscribe a DTDPushListener
to receive information about the DTDMessaging
functioning.
Example:
6. Call the DTDMessaging.startPushService()
method to activate the Messaging module.
When using Android 13 or higher, notifications are disabled by default. The app won’t receive notifications until you request a new permission (POST_NOTIFICATIONS
) and the user grants this permission to your app.
For notifications to work properly, add the following line to the manifest file:
You can check the operation of the POST_NOTIFICATIONS
permission in your app by inserting this example in the code:
If the check results in a negative answer (access is not granted), call this method:
Its execution will call a dialog that in turn will ask the user to opt in:
This code is going to help you get the user’s decision:
Note. In SDK ver. 2.1.5 or higher, if the permission is not granted, you will see this message in the log from DTDMessaging: “Notifications don’t work. Permission android.permission.POST_NOTIFICATIONS is not granted”.
DTDMessaging
moduleDTDPushListener
Interface MethodsDTDPushMessage
).DTDActionButton
)Object
Description
DTDMessaging
The main object for push notification initialization.
DTDMessaging.initialize(Context context)
The push notification initialization method.
DTDMessaging.startPushService()
The push notification activation method. It passes the isAllowed
current state.
DTDMessaging.pushNotificationsAllowed
= true or false
A property responsible for the activation/deactivation of push notifications.
Functions as a getter (describes the current state) and a setter (sets the current state).
When the state transitions, it sends a pt with isAllowed
(true or false) status to the server.
The isAllowed
flag status is stored in the SDK.
DTDMessaging.setIntent(Intent intent)
A method of passing a user intent to the SDK using PushMessage.
Written in the manifest file
<meta-data android:name="com.devtodev.push.default_small_icon" android:resource="@drawable/smallIcon" />
Sets a small custom user icon.
Written in the manifest file
<meta-data android:name="com.devtodev.default_small_icon_color" android:resource="@color/colorPrimary" />
Sets a color of the small custom user icon.
Written in the manifest file
<meta-data android:name="com.devtodev.push.default_large_icon" android:resource="@mipmap/largeIcon" />
Sets a large custom user icon.
DTDMessaging.getToken()
Returns a push notification registration token (firebaseToken
).
DTDMessaging.processPushNotification(Context context, RemoteMessage remoteMessage)
Used to pass the push notification to the FirebaseMessagingService if it was implemented by the client but not by the SDK.
DTDMessaging.setPushListener(DTDPushListener pushListener)
(DTDPushListener pushListener
) - sets a listener for push notification event trapping.
DTDPushListener Interface Methods
Description
onPushServiceRegistrationSuccessful(String deviceId)
Returns a push notification registration token (firebaseToken
).
onPushServiceRegistrationFailed(String error)
Returns errors during push notification registration.
onPushNotificationReceived(Map<String, String> message)
Returns a directory with data for improving your push notifications.
onPushNotificationOpened(DTDPushMessage pushMessage, @Nullable DTDActionButton actionButton)
Returns pushMessage
and actionButton
if they were tapped.
Property
Type
Description
getData()
Map<String, String>
Complete information sent with the use of a remote push notification.
systemId
Int
The notification ID used in the devtodev system.
getTitle(context:Context)
String?
Returns the selected message title or app name if the former is unavailable.
body
String?
The text body.
group
String?
A group of messages.
getSound(context: Context)
Uri?
Returns the storage path of an audio file.
getSoundName()
String?
The notification sound name.
tag
String?
The notification tag.
color
String?
The notification color.
bigPicture
String?
The notification banner if specified.
actionType
DTDActionType
The property that returns an enum’s DTDActionType value.
Possible values:
Url - an external link opening
Share - content sharing
Deeplink - an in-app link opening
actionString
String?
The property that returns an optional action ID.
getIcon(context: Context, userIcon: Int)
Int
The icon resource identifier specified by the user (if specified).
largeIcon
String?
The large notification icon name.
actions
List<DTDActionButton>
The list of action buttons used in the push notification.
isApiSource
Boolean
Specifies whether the push notification was sent using the devtodev API.
Property
Type
Description
Id
String?
The property that returns the tapped button ID.
actionString
String?
The property that returns the optional action ID.
actionType
DTDActionType
The property that returns an enum’s DTDActionType
value.
Possible values:
App - a default value
Url - an external link opening
Share - content sharing
Deeplink - an in-app link opening
icon
String?
The property that returns the button’s icon name.
isBackground
Boolean
The button-click app open mode.
text
String?
The property that returns the text of the tapped button.