Skip to content

Advanced push notification examples

The following guide covers some advanced push notifications examples for the Braze SDK.

Prerequisites

Before you can use this feature, you’ll need to integrate the Android Braze SDK. You’ll also need to set up push notifications.

Custom notification layout

Braze notifications are sent as data messages , which means that your application will always have a chance to respond and perform behavior accordingly, even in the background (in contrast to notification messages, which can be handled automatically by the system when your app is in the background). As such, your application will have a chance to customize the experience by, for example displaying personalized UI elements within the notification delivered to the notification tray. While implementing push in this way may be unfamiliar to some, one of our well-known features at Braze, Push Stories, are a prime example of using custom view components to create an engaging experience!

You can use the IBrazeNotificationFactory interface to customize how Braze push notifications are displayed. By extending BrazeNotificationFactory, Braze will call your factory’s createNotification() method before the notification is displayed to the user. It will then pass a payload containing custom key-value pairs sent through the Braze dashboard or REST API.

In this section, you’ll partner with Superb Owl, the host of a new game show where wildlife rescue teams compete to see who can save the most owls. They’re looking to leverage live updating notifications in their Android app, so they can display the status of an on-going match and make dynamic updates to the notification in realtime.

The Live Update that Superb Owl wants to show, displaying an on-going match between 'Wild Bird Fund' and 'Owl Rescue'. It's currently the fourth quarter and the score is 2-4 with OWL in the lead.

Step 1: Add a custom layout

You can add one or more custom notification RemoteView layouts to your project. These are helpful for handling how notifications are displayed when collapsed or expanded. Your directory structure should be similar to the following:

In each XML file, create a custom layout. Superb Owl created the following layouts for their collapsed and expanded RemoteView layouts:

Show the sample code

Step 2: Create a custom notification factory

In your application, create a new file named MyCustomNotificationFactory.kt that extends BrazeNotificationFactory to handle how custom RemoteView layouts are displayed.

In the following example, Superb Owl created a custom notification factory to display a RemoteView layout for on-going matches. In the next step, they’ll create a new method called getTeamInfo to map a team’s data to the activity.

Show the sample code

Step 3: Map custom data

In MyCustomNotificationFactory.kt, create a new method for handling data when Live Updates are displayed.

Superb Owl created the following method to map each team’s name and logo to expanded Live Updates:

Step 4: Set the custom notification factory

In your application class, use customBrazeNotificationFactory to set your custom notification factory.

Step 5: Send the activity

You can use the /messages/send REST API endpoint to send a push notification to a user’s Android device.

Example curl command

Superb Owl sent their request using the following curl command:

Request parameters

Key Description
REST_API_KEY A Braze REST API key with messages.send permissions.

This can be created in the Braze dashboard from Settings > API Keys.
BRAZE_REST_ENDPOINT Your REST endpoint URL. Your endpoint will depend on the Braze URL for your instance.
USER_ID The ID of the user you are sending the notification to.
messages.android_push.title The message’s title. By default, this is not used for the custom notification factory’s live notifications, but it may be used as a fallback.
messages.android_push.alert The message’s body. By default, this is not used for the custom notification factory’s live notifications, but it may be used as a fallback.
messages.extra Key-value pairs that the custom notification factory uses for live notifications. You can assign any string to this value—however, in the example above, live_updates is used to determine if it’s a default or live push notification.
ASSIGNED_NOTIFICATION_ID The notification ID you want to assign to the chosen user’s live notification. The ID must be unique to this game, and must be used in order to update their existing notification later.

Step 6: Update the activity

To update the existing RemoteView notification with new data, modify the relevant key-value pairs assigned to messages.extra, then use the same notification_id and call the /messages/send endpoint again.

Personalized push notifications

Push notifications can display user-specific information inside a custom view hierarchy. In the following example, an API-trigger is used to send personalized push notification to a user so they can track check their current progress after completing a specific task in the app.

Personalized Push dashboard Example

To set up a personalized push in the dashboard, register the specific category you want to be displayed, then set any relevant user attributes you’d like to display using Liquid.

Personalized Push dashboard Example

Prerequisites

Before you can use this feature, you’ll need to integrate the Swift Braze SDK. You’ll also need to set up push notifications.

Notification content app extensions

Two push messages shown side-by side. The message on the left shows what a push looks like with the default UI. The message on the right shows a coffee punch card push made by implementing a custom push UI.

Notification content app extensions provide you a great option for push notification customization. Notification content app extensions display a custom interface for your app’s notifications when a push notification is expanded.

Push notifications can be expanded in three different ways:

  • A long press on the push banner
  • Swiping down on the push banner
  • Swiping the banner to the left and selecting “View”

These custom views offer smart ways to engage customers by displaying distinct types of content, including interactive notifications, notifications populated with user data, and even push messages that can capture information like phone numbers and email. One of our well-known features at Braze, Push Stories, are a prime example of what a push notification content app extension can look like!

Requirements

  • Push notifications successfully integrated in your app
  • The following files generated by Xcode based on your coding language:

Swift

  • NotificationViewController.swift
  • MainInterface.storyboard

Objective-C

  • NotificationViewController.h
  • NotificationViewController.m
  • MainInterface.storyboard

Interactive push notification

Push notifications can respond to user actions inside a content app extension. For users running iOS 12 or later, this means you can turn your push notifications into fully interactive messages! This provides an exciting option to introduce interactivity to your promotions and applications. For example, your push notification can include a game for users to play, a spin-to-win wheel for discounts, or a “like” button to save a listing or song.

The following example shows a push notification where users are able to play a match game inside the expanded notification.

A diagram of what the phases of a interactive push notification could look like. A sequence shows a user pressing into a push notification that displays an interactive matching game.

Dashboard configuration

To create an interactive push notification, you must set a custom view in your dashboard.

  1. From the Campaigns page, click Create Campaign to start a new push notification campaign.
  2. On the Compose tab, toggle on Notification Buttons.
  3. Enter a custom iOS category in the iOS Notification Category field.
  4. In the .plist of your Notification Content Extension Target, set the UNNotificationExtensionCategory attribute to your custom iOS category. The value given here must match what is set in the Braze dashboard under iOS Notification Category.
  5. Set the UNNotificationExtensionInteractionEnabled key to true to enable user interactions in a push notification.

The notification button options found in the push message composer settings.

Personalized push notifications

Two iPhones displayed side-by-side. The first iPhone shows the unexpanded view of the push message. The second iPhone shows the expanded version of the push message displaying a "progress" shot of how far they are through a course, the name of the next session, and when the next session must be completed.

Push notifications can display user-specific information inside a content extension. This allows you to create user-focused push content, such as adding the option to share your progress across different platforms, show unlocked achievements, or display onboarding checklists. This example shows a push notification displayed to a user after they have completed a specific task in the Braze Learning course. By expanding the notification, the user can see their progress through their learning path. The information provided here is user-specific and can be fired off as a session is completed or a specific user action is taken by leveraging an API trigger.

Dashboard configuration

To create a personalized push notification, you must set a custom view in your dashboard.

  1. From the Campaigns page, click Create Campaign to start a new push notification campaign.
  2. On the Compose tab, toggle on Notification Buttons.
  3. Enter a custom iOS category in the iOS Notification Category field.
  4. In the Settings tab, create key-value pairs using standard Liquid. Set the appropriate user attributes you want the message to show. These views can be personalized based on specific user attributes of a specific user profile.
  5. In the .plist of your Notification Content Extension Target, set the UNNotificationExtensionCategory attribute to your custom iOS category. The value given here must match what is set in the Braze dashboard under iOS Notification Category.

Four sets of key-value pairs, where "next_session_name" and "next_session_complete_date" are set as an API trigger property using Liquid, and "completed_session count" and "total_session_count" are set as a custom user attribute using Liquid.

Handling key-value pairs

The method didReceive is called when the notification content app extension has received a notification. This method can be found within the NotificationViewController. The key-value pairs provided in the dashboard are represented in the code through the use of a userInfo dictionary.

Parsing Key-Value Pairs from Push Notifications

Information capture push notification

Push notifications can capture user information inside a content app extension, pushing the limits of what is possible with a push. Requesting user input through push notifications allows you to not only request basic information like name or email, but also prompt users to submit feedback or complete an unfinished user profile.

In the following flow, the custom view is able to respond to state changes. Those state change components are represented in each image.

  1. User receives a push notification.
  2. Push is opened. After expanded, the push prompts the user for information. In this example, the user’s email address is requested, but you could request any sort of information.
  3. Information is provided, and if in the expected format, the registration button is shown.
  4. Confirmation view is displayed, and push gets dismissed.

Dashboard configuration

To create an information capture push notification, you must set a custom view in your dashboard.

  1. From the Campaigns page, click Create Campaign to start a new push notification campaign.
  2. On the Compose tab, toggle on Notification Buttons.
  3. Enter a custom iOS category in the iOS Notification Category field.
  4. In the Settings tab, create key-value pairs using standard Liquid. Set the appropriate user attributes you want the message to show.
  5. In the .plist of your Notification Content Extension Target, set the UNNotificationExtensionCategory attribute to your custom iOS category. The value given here must match what is set in the Braze dashboard under iOS Notification Category.

As seen in the example, you may also include an image in your push notification. To do this, you must integrate rich notifications, set the notification style in your campaign to Rich Notification, and include a rich push image.

A push message with three sets of key-value pairs. 1. "Braze_id" set as a Liquid call to retrieve Braze ID. 2. "cert_title" set as "Braze Marketer Certification". 3. "Cert_description" set as "Certified Braze marketers drive...".

Handling button actions

Each action button is uniquely identified. The code checks if your response identifier is equal to the actionIndentifier, and if so, knows that the user clicked the action button.

Handling Push Notification Action Button Responses

Dismissing pushes

Push notifications can be automatically dismissed from an action button press. There are three pre-built push dismissal options that we recommend:

  1. completion(.dismiss) - Dismisses the notification
  2. completion(.doNotDismiss) - Notification stays open
  3. completion(.dismissAndForward) - Push dismisses and the user gets forwarded into the application
HOW HELPFUL WAS THIS PAGE?
New Stuff!