Skip to content
Titanium SDK
Version12.7.1

You are reading 12.7.1. See this page in 13.4.1.

Titanium.Android.Notification

proxyAndroidsince 1.5

Extends Titanium.Proxy

UI notifications that can be sent while the application is in the background.

Notifications alert the user that something is happening to your application while it is in the background. Notifications appear in the notification drawer until the user clears them and on the lock screen for devices running Android 5.0 or greater. Note that the user can filter or turn notifications on and off from Settings.

For Android toast notifications (pop-up notifications sent while the application is in the foreground), see Titanium.UI.Notification.

To create a notification, use the Titanium.Android.createNotification method.

Pass the Notification object to the methods of the Titanium.Android.NotificationManager class to send or cancel notifications.

For examples of using Notifications, see Android Notifications.

Further Reading:

Android 5.0 Changes

Starting with Android 5.0 (API 21), ticker text, defined with the tickerText property, no longer appears in the status bar when the notification is first sent but is used as an audible notification if accessibility services are enabled.

Notifications now appear in the lock screen. The user can customize the visibility level of these notifications from Settings. The visibility level is based on the visibility property set on the notification.

Examples

Simple Notification Example

The following example shows how to create a notification that launches the application when the user clicks on the notification.

To have the notification launch an application when the user clicks on it, assign the contentIntent property to an Intent object that launches the main activity of the application by specifying the packageName and className properties of the intent.

The packageName is the project's application ID. For Titanium applications, you can find this in the tiapp.xml file.

The className is the name of the main activity, prefixed with the packageName. For Titanium applications, the name of the main activity is the application name with only the first character capitalized suffixed with Activity. You can also find the name of the main activity in the build/android/AndroidManifest.xml file after you build your application.

For example, if the application ID is com.appcelerator.notificationsample and the application name is NotificationSample, the class name will be:

com.appcelerator.notificationsample.NotificationsampleActivity

The notification icon must be specified as an Android resource ID. In this case, the icon, my_icon.png would be placed in platforms/android/res/drawable/my_icon.png. See <Titanium.App.Android.R> for more information.

This example does not include a custom alert sound. For information on adding a custom alert sound, see Notification.sound.

// Intent object to launch the application
var intent = Ti.Android.createIntent({
    action: Ti.Android.ACTION_MAIN,
    // Substitute the correct class name for your application
    className: 'com.appcelerator.notificationsample.NotificationsampleActivity',
    // Substitue the correct package name for your application
    packageName: 'com.appcelerator.notificationsample'
});
intent.flags |= Ti.Android.FLAG_ACTIVITY_NEW_TASK;
intent.addCategory(Ti.Android.CATEGORY_LAUNCHER);

// Create a PendingIntent to tie together the Activity and Intent
var pending = Titanium.Android.createPendingIntent({
    intent: intent,
    flags: Titanium.Android.FLAG_UPDATE_CURRENT
});

// Create the notification
var notification = Titanium.Android.createNotification({
  // icon is passed as an Android resource ID -- see Ti.App.Android.R.
    icon: Ti.App.Android.R.drawable.my_icon,
  contentTitle: 'Something Happened',
  contentText : 'Click to return to the application.',
  contentIntent: pending
});

// Send the notification.
Titanium.Android.NotificationManager.notify(1, notification);

Bundled Notifications Example

The following example shows how to create bundled notifications.

var id = 100,
    groupKey = 'group_key';

for (var i = 3; i > 0; i--) {
    Ti.Android.NotificationManager.notify(id++,
        Ti.Android.createNotification({
            icon: Ti.Android.R.drawable.ic_dialog_info,
            contentTitle: 'NOTIFICATION #' + i,
            contentText : 'Lorem ipsum dolor sit amet, facer eruditi omittantur cu pri, nibh nonumy putant eam eu.'
            groupKey: groupKey
        })
    );
}
Ti.Android.NotificationManager.notify(id++,
    Ti.Android.createNotification({
        icon: Ti.Android.R.drawable.ic_dialog_info,
        contentTitle: 'NOTIFICATIONS',
        contentText : 'You have 3 notifications.',
        groupKey: groupKey,
        groupSummary: true
    })
);

Properties 29

apiName

Stringsince Android 3.2.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0read-only

Inherited from Titanium.Proxy

The name of the API that this proxy corresponds to.

bubbleParent

Booleansince Android 3.0.0, iPhone 3.0.0, iPad 3.0.0, macOS 9.2.0

Inherited from Titanium.Proxy

Indicates if the proxy will bubble an event to its parent.

Default: true

category

Stringsince 3.6.0

Sets the notification's category.

If your notification falls into one of the predefined categories, assign it accordingly. Aspects of the system UI such as the notification shade may use this information to make ranking and filtering decisions. This property only works for devices running Android 5.0 (API 21) and greater.

Accepts 30 constants

channelId

Stringsince 7.0.0Android 8.0+

The channel id specified for the notification.

color

Stringsince 7.0.0

Accent color used behind icon.

Accent color of the circle used behind icon. The Icon will be stenciled in white on top of a cicle of the color set. For information about color values, see the "Colors" section of Titanium.UI.

See Android Reference for the color property.

Description text of the notification.

Custom layout to display in the notification.

Calling setLatestEventInfo or setting the contentText or contentTitle properties causes the notification to use the default notification layout, overriding any custom layout set through contentView.

If you use a custom layout, you can use the RemoteViews methods to update the displayed notification.

groupKey

Stringsince 6.2.0Android 5.1+

The group key that the notification will belong to.

groupSummary

Booleansince 6.2.0Android 5.1+

Specifies if this is a group summary notification.

icon

Number | String

Notification icon, specified as an Android resource ID, or a local URL to a density-specific image.

If specified as a URL, the icon must be placed in one of the density-specific folders under Resources/android/images. For example, if your icon is called my_icon.png, you would create high- and medium-density versions of the icons with the following paths:

Resources/android/images/res-hdpi/my_icon.png
Resources/android/images/res-mdpi/my_icon.png

To access this icon, you'd use the URL '/images/my_icon.png'.

To access the same icon using an Android resource ID, place the icon in:

platform/android/res/drawable/my_icon.png

This icon's resource ID can be referenced through the Titanium.App.Android.R object:

icon: Ti.App.Android.R.drawable.my_icon,

See Titanium.App.Android.R for more information on accessing Android resources by ID.

largeIcon

Number | Stringsince 4.2.0

Add a large icon to the notification (and the ticker on some devices) specified as an Android resource ID, or a local URL to a density-specific image.

If specified as a URL, the icon must be placed in one of the density-specific folders under Resources/android/images. For example, if your icon is called my_large_icon.png, you would create high- and medium-density versions of the icons with the following paths:

Resources/android/images/res-hdpi/my_large_icon.png
Resources/android/images/res-mdpi/my_large_icon.png

To access this large icon, you'd use the URL '/images/my_large_icon.png'.

To access the same large icon using an Android resource ID, place the icon in:

platform/android/res/drawable/my_large_icon.png

This large icon's resource ID can be referenced through the Titanium.App.Android.R object:

icon: Ti.App.Android.R.drawable.my_large_icon,

See Titanium.App.Android.R for more information on accessing Android resources by ID.

ledARGB

Number

The color for the LED to blink.

ledOffMS

Number

The number of milliseconds for the LED to be off while it's flashing.

ledOnMS

Number

The number of milliseconds for the LED to be on while it's flashing.

number

Number

The number of events that this notification represents.

sound

StringAndroid ≤7.1

A URL to the sound to play.

The URL cannot refer to a file in the Resources directory, but it can refer to a file in the raw resources directory (Filesystem.resRawDirectory) or the external storage directory (Filesystem.externalStorageDirectory).

Note that this sound property is ignored on Android 8.0 and above. On these OS versions, you must use the NotificationChannel.sound property and that sound will play for any notification posted under that channel. Also, you will still need to set this notification's sound property for OS versions older than Android 8.0 too, meaning that the sound URL needs to be set in both places.

To play a raw resource file, place the audio file in the platform/android/res/raw folder and reference it as:

notification.sound = Ti.Filesystem.resRawDirectory + audioFileName;

To play a file from the Resources directory, first copy it to external storage. For example, you could define the following function:

// Copy resource file to SD card, and return a native path.
// Return undefined if we can't copy the file.
function getOrCopyAudioFile(resourceFilename) {
    var outFile = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, 'sound', 'cricket.wav');
    var outPath = outFile.nativePath;

    if (! outFile.exists()) {
        var outDir = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, 'sound');
        if (! outDir.isDirectory()) {
            if (! outDir.createDirectory()) {
                Ti.API.debug("Failed to create directory.");
                outDir = null;
                return undefined;
            }
        }
        outDir = null;

        var inFile = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'cricket.wav');
        try {
            inFile.copy(outPath);
        } catch (ex) {
            Ti.API.debug("Failed to copy file.");
            inFile = null;
            return undefined;
        }
        inFile = null;
    }
    outFile = null;
    return outPath;
}

Then when creating a notification, specify the sound like this:

var sound = getOrCopyAudioFile();
if (sound) {
    notification.sound = sound;
}

Style object that can apply a rich notification style.

Notifications in the notification drawer appear in two main visual styles, normal view and big view. The big view of a notification only appears when the notification is expanded. This happens when the notification is at the top of the drawer, or the user clicks the notification. On platform versions that don't offer expanded notifications, styles that depend on expanded notifications have no effect.

Text to scroll across the screen when this item is added to the status bar.

For devices running Android 5.0 (API 21) and greater, the ticket text is no longer displayed in the status bar. However, this property is used as an audible notification if accessibility services are enabled.

visibility

Numbersince 3.6.0

Allows user to conceal private information of the notification on the lockscreen.

This property only works on devices running Android 5.0 (API 21) and greater.

Default: undefined but behaves as Titanium.Android.VISIBILITY_PUBLIC

wakeLock

wakeLockOptionssince 6.2.0

Will wake up the device for the given time (in milliseconds) when the notification is shown. The application needs to also set the android.permission.WAKE_LOCK permission in the Android manifest section of the tiapp.xml file.

<ti:app>
    <android>
        <manifest>
            <uses-permission android:name="android.permission.WAKE_LOCK" />
        </manifest>
    </android>
</ti:app>

Default: 0

when

Date | Number

The timestamp for the notification (defaults to the current time).

If the timestamp is set to 0, no time is displayed in the notification window for this notification.

Methods 7

addAction

since 6.2.0

Add an action button to the notification

Up to three actions buttons can be added, additional buttons will be ignored.

Parameters
ParametersTypeDescription
iconNumber | String

Icon of the action button as URL or resource ID

titleString

Title of the action button

intentTitanium.Android.PendingIntent

Intent of the action button

Inherited from Titanium.Proxy

Adds the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to invoke when the event is fired.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

Inherited from Titanium.Proxy

Fires a synthesized event to any registered listeners.

Parameters
ParametersTypeDescription
nameString

Name of the event.

event?Dictionary

A dictionary of keys and values to add to the Titanium.Event object sent to the listeners.

Inherited from Titanium.Proxy

Removes the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to remove. Must be the same function passed to addEventListener.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

Sets the latest event info using the built-in notification view for this notification.

Parameters
ParametersTypeDescription
contentTitleString

Title to display when the notification is expanded.

contentTextString

Text to display when the notification is expanded.

contentIntentTitanium.Android.PendingIntent

Intent to launch when the user clicks on the notification.

setProgress

since 6.1.0

Set the progress this notification represents.

Parameters
ParametersTypeDescription
maxNumber

Defines the maximum value the progress can take.

progressNumber

Defines the progress value, between 0 and max.

indeterminateBoolean

Allows to enable the indeterminate mode.