You are reading 12.7.1. See this page in 13.4.1.
Titanium.Android.Notification
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
Inherited from Titanium.Proxy
The name of the API that this proxy corresponds to.
audioStreamType
NumberThe audio stream type to use when playing the sound.
Specify one of the STREAM constants from Titanium.Android.
Inherited from Titanium.Proxy
Indicates if the proxy will bubble an event to its parent.
Default: true
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
- CATEGORY_ALARM
- CATEGORY_ALTERNATIVE
- CATEGORY_BROWSABLE
- CATEGORY_CALL
- CATEGORY_DEFAULT
- CATEGORY_DEVELOPMENT_PREFERENCE
- CATEGORY_EMAIL
- CATEGORY_EMBED
- CATEGORY_ERROR
- CATEGORY_EVENT
- CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST
- CATEGORY_HOME
- CATEGORY_INFO
- CATEGORY_LAUNCHER
- CATEGORY_MESSAGE
- CATEGORY_MONKEY
- CATEGORY_OPENABLE
- CATEGORY_PREFERENCE
- CATEGORY_PROGRESS
- CATEGORY_PROMO
- CATEGORY_RECOMMENDATION
- CATEGORY_SAMPLE_CODE
- CATEGORY_SELECTED_ALTERNATIVE
- CATEGORY_SERVICE
- CATEGORY_SOCIAL
- CATEGORY_STATUS
- CATEGORY_TAB
- CATEGORY_TEST
- CATEGORY_TRANSPORT
- CATEGORY_UNIT_TEST
The channel id specified for the notification.
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.
The PendingIntent to execute when the expanded status entry is clicked.
contentText
StringDescription text of the notification.
contentTitle
StringTitle 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.
defaults
NumberSpecifies which values should be taken from the defaults.
Specify the bitwise OR of the desired values: Titanium.Android.DEFAULT_LIGHTS, Titanium.Android.DEFAULT_SOUND, and Titanium.Android.DEFAULT_VIBRATE. Use Titanium.Android.DEFAULT_ALL to specify that all values should be taken from the defaults.
The PendingIntent to execute when the status entry is deleted by the user with the "Clear All Notifications" button.
flags
NumberSet of flags for the notification.
Default: <Titanium.Android.FLAG_AUTO_CANCEL>
The group key that the notification will belong to.
Specifies if this is a group summary notification.
icon
Number | StringNotification 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.
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
NumberThe color for the LED to blink.
ledOffMS
NumberThe number of milliseconds for the LED to be off while it's flashing.
ledOnMS
NumberThe number of milliseconds for the LED to be on while it's flashing.
Inherited from Titanium.Proxy
The Window or TabGroup whose Activity lifecycle should be triggered on the proxy.
number
NumberThe number of events that this notification represents.
Sets the priority of the notification.
This property only works for devices running Android 4.1 (API 16) and greater.
Default: undefined but behaves as Titanium.Android.PRIORITY_DEFAULT
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.
tickerText
StringText 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.
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
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 | NumberThe 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.0Add an action button to the notification
Up to three actions buttons can be added, additional buttons will be ignored.
| Parameters | Type | Description |
|---|---|---|
| icon | Number | String | Icon of the action button as URL or resource ID |
| title | String | Title of the action button |
| intent | Titanium.Android.PendingIntent | Intent of the action button |
Inherited from Titanium.Proxy
Adds the specified callback as an event listener for the named event.
| Parameters | Type | Description |
|---|---|---|
| name | String | Name of the event. |
| callback | Callback<Titanium.Event> | Callback function to invoke when the event is fired. 4 fields
|
applyProperties
since 3.0.0Inherited from Titanium.Proxy
Applies the properties to the proxy.
| Parameters | Type | Description |
|---|---|---|
| props | Dictionary | A dictionary of properties to apply. |
Inherited from Titanium.Proxy
Fires a synthesized event to any registered listeners.
| Parameters | Type | Description |
|---|---|---|
| name | String | 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 | Type | Description |
|---|---|---|
| name | String | Name of the event. |
| callback | Callback<Titanium.Event> | Callback function to remove. Must be the same function passed to 4 fields
|
Sets the latest event info using the built-in notification view for this notification.
| Parameters | Type | Description |
|---|---|---|
| contentTitle | String | Title to display when the notification is expanded. |
| contentText | String | Text to display when the notification is expanded. |
| contentIntent | Titanium.Android.PendingIntent | Intent to launch when the user clicks on the notification. |
setProgress
since 6.1.0Set the progress this notification represents.
| Parameters | Type | Description |
|---|---|---|
| max | Number | Defines the maximum value the progress can take. |
| progress | Number | Defines the progress value, between 0 and max. |
| indeterminate | Boolean | Allows to enable the indeterminate mode. |