A unified GDScript interface for scheduling local notifications on Android and iOS.
Features:
- Schedule local notifications with customizable titles, content, and delays.
- Schedule repeating notifications with intervals.
- Manage notification channels and badges.
- Handle permissions and user interactions via signals.
- Installation
- Usage
- Signals
- Error Codes
- Platform-Specific Notes
- Links
- All Plugins
- Credits
- Contributing
Uninstall previous versions before installing. If using both Android & iOS, ensure same addon interface version.
Options:
- AssetLib
- Search for
Notification Scheduler
- Click
Download
→Install
- Install to project root,
Ignore asset root
checked - Enable via Project → Project Settings → Plugins
- Ignore file conflict warnings when installing both versions
- Search for
- Manual
- Download release from GitHub
- Unzip to project root
- Enable via Plugins tab
- Add a NotificationScheduler node to your scene.
- Connect signals:
initialization_completed
notification_opened
notification_dismissed
permission_granted
permission_denied
- Check permission:
if not $NotificationScheduler.has_post_notifications_permission(): $NotificationScheduler.request_post_notifications_permission()
- To send user to App Info (manual enable):
$NotificationScheduler.open_app_info_settings()
- Create a notification channel:
var res = $NotificationScheduler.create_notification_channel( NotificationChannel.new() .set_id("my_channel_id") .set_name("My Channel Name") .set_description("My channel description") .set_importance(NotificationChannel.Importance.DEFAULT))
- Build & schedule notification:
var data = NotificationData.new() .set_id(1) .set_channel_id("my_channel_id") .set_title("My Title") .set_content("My content") .set_small_icon_name("ic_custom_icon") .set_delay(10) var res = $NotificationScheduler.schedule(data)
Other Methods:
cancel(id)
– cancel before opened/dismissedset_badge_count(count)
– set/remove app icon badge (iOS-only)get_notification_id()
– get ID of last opened notification
initialization_completed()
: Emitted when the plugin is initialized.notification_opened(notification_id: int)
: Emitted when a user taps notification.notification_dismissed(notification_id: int)
: Emitted when a user dismisses notification.permission_granted(permission_name: String)
: Emitted when permission is granted.permission_denied(permission_name: String)
: Emitted when permission is denied.
Constant | Value | Description |
---|---|---|
ERR_ALREADY_EXISTS |
1 |
Channel ID already exists |
ERR_INVALID_DATA |
2 |
Invalid notification/channel data |
ERR_UNAVAILABLE |
3 |
Not supported on current platform |
ERR_UNCONFIGURED |
4 |
Plugin not initialized |
OK |
0 |
Success |
- Default icon:
ic_default_notification
inres://assets/NotificationSchedulerPlugin
- Custom icon:
- Generate via Android Studio → Image Asset Studio → Notification Icons
- Copy generated drawables into
res://assets/NotificationSchedulerPlugin
- Use
set_small_icon_name("icon_name")
- Troubleshooting:
- Logs:
adb logcat | grep 'godot'
(Linux),adb.exe logcat | select-string "godot"
(Windows) - No small icon error: ensure icons exist in assets directory.
- Battery restrictions: check Settings → Apps → Your App → Battery.
- Logs:
- Set notification icons in Project → Export → iOS.
- System limits:
- Max repeating notifications: 64
- Min interval: 60 seconds
- View XCode logs while running the game for troubleshooting.
- See Godot iOS Export Troubleshooting.
Plugin | Android | iOS |
---|---|---|
Notification Scheduler | ✅ | ✅ |
Admob | ✅ | ✅ |
Deeplink | ✅ | ✅ |
Share | ✅ | ✅ |
In-App Review | ✅ | ✅ |
- Developed by Cengiz
- iOS part based on Godot iOS Plugin Template
- Original: Godot Notification Scheduler
This section provides information on how to build the plugin for contributors.
- Run
./script/build.sh -A <godot version>
initially to run a full build - Run
./script/build.sh -cgA <godot version>
to clean, redownload Godot, and rebuild - Run
./script/build.sh -ca
to clean and build without redownloading Godot - Run
./script/build.sh -h
for more information on the build script
Options:
- Use Android Studio to build via Build->Assemble Project menu
- Switch Active Build Variant to release and repeat
- Run packageDistribution task to create release archive
- Use project-root-level build.sh script
./script/build.sh -ca
- clean existing build, do a debug build for Android./script/build.sh -carz
- clean existing build, do a release build for Android, and create archive