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 rootchecked - 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_completednotification_openednotification_dismissedpermission_grantedpermission_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_notificationinres://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 -cato clean and build without redownloading Godot - Run
./script/build.sh -hfor 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

