# Push Notifications

Positive User sends push notifications through Firebase Cloud Messaging (FCM). The SDK handles token registration, notification display, and analytics automatically.


# Setup

# 1. Add a Firebase Messaging Service

Create a service that extends FirebaseMessagingService and pass incoming messages to the SDK:

  • Kotlin
  • Java
class FcmService : FirebaseMessagingService() {

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        val handled = UserCom.getInstance().onNotification(applicationContext, remoteMessage)

        if (!handled) {
            // Handle your own notifications here
        }
    }
}

onNotification() returns true if the message belongs to Positive User (identified by the user_com_notification key) and false otherwise, so it won't interfere with your existing notification handling.

# 2. Register the service in AndroidManifest.xml

<service
    android:name=".FcmService"
    android:exported="false"
    android:stopWithTask="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

# 3. Track notification clicks

Call handleRouteFromNotification() in your launcher Activity's onCreate() to record notification clicks:

  • Kotlin
  • Java
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    UserCom.getInstance().handleRouteFromNotification(intent)
}

# FCM token

No manual token registration needed - SDK retrieves and registers the FCM token automatically during register().


# Customize notification appearance

By default, the SDK uses a grey dot as the notification icon. To use your own icon and color, add meta-data entries in AndroidManifest.xml.

Firebase-wide defaults (apply to all Firebase notifications):

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/colorAccent" />

Positive User-specific overrides (apply only to Positive User notifications):

<meta-data
    android:name="com.user.sdk.default_notification_icon"
    android:resource="@drawable/ic_notification_usercom" />
<meta-data
    android:name="com.user.sdk.default_notification_color"
    android:resource="@color/colorAccentUserCom" />

# Customize the notification channel name

Override the user_com_channel_name string in your res/values/strings.xml to rename the default notification channel:

<string name="user_com_channel_name">Promotions</string>

# Manual notification handling

To access notification data directly, use UserComNotification.create(). Pass either the intent extras (from an Activity) or the remote message data (from FirebaseMessagingService):

  • Kotlin
  • Java
// From Activity
val notification = UserComNotification.create(intent.extras)

// From FirebaseMessagingService
val notification = UserComNotification.create(remoteMessage.data)

create() returns null if the data doesn't contain the user_com_notification key.


# Parameters

Method Description
onNotification(Context, RemoteMessage) Passes an incoming FCM message to the SDK. Returns true if handled.
handleRouteFromNotification(Intent) Tracks a notification click. Call this from your launcher Activity. Returns true if the intent contains a Positive User notification.