{"id":22595741,"url":"https://github.com/kyoz/godot-local-notification","last_synced_at":"2026-04-02T00:33:17.412Z","repository":{"id":181110600,"uuid":"666145151","full_name":"kyoz/godot-local-notification","owner":"kyoz","description":":bell: Godot 3\u00264 plugin to send local notifications","archived":false,"fork":false,"pushed_at":"2026-03-23T03:39:26.000Z","size":771,"stargazers_count":31,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-23T23:59:18.258Z","etag":null,"topics":["android","godot","godot-engine","ios","plugin"],"latest_commit_sha":null,"homepage":"https://github.com/kyoz/godot-local-notification","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kyoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"patreon":"Kyoz","ko_fi":"minkyoz"}},"created_at":"2023-07-13T20:25:05.000Z","updated_at":"2026-03-23T03:38:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"bed1f374-cf1e-457a-87c7-4417d703b763","html_url":"https://github.com/kyoz/godot-local-notification","commit_stats":null,"previous_names":["kyoz/godot-local-notification"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/kyoz/godot-local-notification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoz%2Fgodot-local-notification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoz%2Fgodot-local-notification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoz%2Fgodot-local-notification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoz%2Fgodot-local-notification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyoz","download_url":"https://codeload.github.com/kyoz/godot-local-notification/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoz%2Fgodot-local-notification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","godot","godot-engine","ios","plugin"],"created_at":"2024-12-08T10:11:28.104Z","updated_at":"2026-04-02T00:33:17.396Z","avatar_url":"https://github.com/kyoz.png","language":"GDScript","funding_links":["https://patreon.com/Kyoz","https://ko-fi.com/minkyoz"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"./icon.png\" alt=\"Godot Local Notification\" width=512\u003e\n  \u003cbr\u003e\n  Godot Local Notification\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eGodot plugin to send Local Notification on Android/iOS. Supports Godot 3 \u0026 4\u003c/a\u003e.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kyoz/godot-local-notification/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/tag/kyoz/godot-local-notification?label=Version\u0026style=flat-square\"\u003e\n  \u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp\u003c/span\u003e\n  \u003ca href=\"https://github.com/kyoz/godot-local-notification/actions\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/kyoz/godot-local-notification/release.yml?label=Build\u0026style=flat-square\u0026color=00ad06\"\u003e\n  \u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp\u003c/span\u003e\n  \u003ca href=\"https://github.com/kyoz/godot-local-notification/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/downloads/kyoz/godot-local-notification/total?style=flat-square\u0026label=Downloads\u0026color=de3f00\"\u003e\n  \u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp\u003c/span\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/kyoz/godot-local-notification?style=flat-square\u0026color=c99e00\"\u003e\n  \u003cspan\u003e\u0026nbsp\u003c/span\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/kyoz/godot-local-notification?style=flat-square\u0026color=fc7b03\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#caution\"\u003eCaution\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#customize\"\u003eCustomize\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#api\"\u003eAPI\u003c/a\u003e •\n  \u003ca href=\"#contribute\"\u003eContribute\u003c/a\u003e •\n  \u003ca href=\"https://github.com/kyoz/godot-local-notification/releases\"\u003eDownloads\u003c/a\u003e \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./demo.jpg\" style=\"max-width: 580px; border-radius: 24px\"\u003e\n\u003c/p\u003e\n\n# About\n\nThis plugin helps send Local Notifications (Android/iOS). Send oneshot or daily notifications at a specified time to user.\n\nThis plugin only handles Local Notification, it does NOT support Remote Notification.\n\nBuilt using automation scripts combined with CI/CD to help speed up the release progress as well as the release of hotfixes which save some of our time.\n\nSupports Godot 3 \u0026 4.\n\n# Caution\n\nThis plugin supports the latest Android (13+) and iOS. But there are some things you should know before using.\n\nThe notification time may be delayed by a few seconds or in worst cases, minutes. For instance, when the user turn on Battery Optimizaztion mode, the notifications will be further delayed or even not displayed. That's because I'm avoiding using `unsafe` permissions (Android). It's risky and can crash your app/game, which is not worth it.\n\nOn iOS, the minimum `repeating_interval` is 60 seconds.\n\nYou shouldn't abuse too many notifications and annoy the user. Schedule notifications at specific moments like when player's energy is full, when a tree grows or something like that...\n\nWhen pushing a set of notifications, try to store their tag somewhere, in case you want to remove them and schedule a new set.\n\n# Installation\n\n## Android\n\nDownload the [Android plugin](https://github.com/kyoz/godot-local-notification/releases) (match your Godot version), and extract them to `your_project/android/plugins`\n\nEnable `LocalNotification` plugin in your Android export preset.\n\n*Note*: You must [use custom build](https://docs.godotengine.org/en/stable/tutorials/export/android_custom_build.html) for Android to use plugins.\n\n## iOS\n\nDownload the [iOS plugin](https://github.com/kyoz/godot-local-notification/releases) (match your Godot version), and extract them to `ios/plugins`\n\nEnable `LocalNotification` plugin in your iOS export preset.\n\n# Customize\n\nOn Android, you can change the color of notifications by adding `notification-color.xml` to your app's `android/build/res/values` folder with the following content:\n\n```\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cresources\u003e\n    \u003ccolor name=\"notification_color\"\u003e#000000\u003c/color\u003e\n\u003c/resources\u003e\n```\n\nThe default color is black (#000000).\n\nYou should also use [this](https://romannurik.github.io/AndroidAssetStudio/icons-notification.html) or [Image Asset Studio](https://developer.android.com/studio/write/create-app-icons) (in Android Studio) to generate your notification icon, and put them in mipmap folders.\n\nThe name of the notification icon must be `notification_icon.png`\n\n```\nandroid/build/res/mipmap*/notification_icon.png\n```\n\nOn iOS, the notification icon will be the your App Icon so there's no need to do anything except designing your beautiful icon.\n\n# Usage\n\nAn `autoload` script is provided for easier use of this plugin.\n\nDownload the [autoload file](./autoload) (match your Godot version). Add it to your project `autoload` list.\n\nThen you can easily use the plugin anywhere with:\n\n```gdscript\nLocalNotification.init()\n\nLocalNotification.requestPermission()\n\n# To ensure the request process has finished, you can use the signal,\n# I prefer this\nyield(LocalNotification, \"on_permission_request_completed\")\n\nif LocalNotification.isPermissionGranted():\n  LocalNotification.show(title, message, 30, 10)\n```\n\n\"Why do I have to call `init()`?\" Well, if you don't want to, you can change `init()` to `_ready()` on the `autoload` file. But in my experience, when using a lot of plugin, initializing all plugins on `_ready()` is not a good idea. This way, you can choose whenever to initialize the plugin e.g. when showing a loading scene, etc.\n\nFor more details, see [examples](./example/).\n\n# API\n\n## Methods\n\n\u003e `isPermissionGranted`() -\u003e bool\n\nUsed to check current status of permission. Returns `true` if permission is granted, `false` if it is not granted or denied.\n\n\u003e `requestPermission`() -\u003e void\n\nUsed to request permission to push local notification. On Android \u003c= 12, the permission is always granted. But you should call it anyway to have a clean code base across all versions and platforms.\n\n\u003e `openAppSetting`() -\u003e void\n\nUsed to open App Settings. When the user has denied once on iOS and twice on Android, the permission dialog will never appear again. So I make this handy method for the user to jump to App Settings so they can re-activate notification.\n\n*WARNING*: If `isPermissionGranted()` still returns `false` after calling `requestPermission()`, it means the user has denied the permission. You can use this function to help them easily toggle notification on. But you should prompt the user, e.g. with a dialog, to let them know whether to open App Settings or not. Don't just jump out of the app without any pre-notice, they will be confused and may be discouraged to re-open your app :(\n\n\u003e `show`(title, message, interval, tag) -\u003e void\n\nUsed to show a notification after `interval` seconds. `interval` must be greater than 0. And on `iOS` the notification may not be displayed if the app is running on the foreground.\n\n\u003e `showRepeating`(title, message, interval, repeat_interval, tag) -\u003e void\n\nSimilar to `show()`, but the notification will be pushed once every `repeat_interval`.\n\n\u003e `showDaily`(title, message, at_hour, at_minute, tag) -\u003e void\n\nShow a daily notification at your chosen hour and minute.\n\n\u003e `cancel`(tag) -\u003e void\n\nCancel notifications with this `tag`. When pushing a set of notifications, try to store their tag somewhere, in case you want to remove them and schedule a new set.\n\n## Signals\n\n```gdscript\nsignal on_permission_request_completed() # emits when the permission request flow is completed\n```\n\n# Contribute\n\nI want to help contribute to the Godot community so I create these plugins. I've prepared almost everything to help simplify and speed up the development and release progress.\n\nWith only one command, you can build and release this plugin. Read [DEVELOP.md](./DEVELOP.md) for more information.\n\nIf you find bugs, please open issues.\n\nIf you have time to fix bugs or improve the plugins, please open a PR. It's always welcomed and appreciated.\n\n# License\n\nMIT © [Kyoz](mailto:banminkyoz@gmail.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyoz%2Fgodot-local-notification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyoz%2Fgodot-local-notification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyoz%2Fgodot-local-notification/lists"}