{"id":2460,"url":"https://github.com/isadon/RMessage","last_synced_at":"2025-08-03T00:30:54.656Z","repository":{"id":55527433,"uuid":"47652217","full_name":"isadon/RMessage","owner":"isadon","description":"A crisp in-app notification/message banner built in Swift.","archived":false,"fork":false,"pushed_at":"2022-05-13T15:50:23.000Z","size":14169,"stargazers_count":412,"open_issues_count":2,"forks_count":64,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-12-01T08:09:53.122Z","etag":null,"topics":["ios","notifications","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/isadon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-08T22:01:12.000Z","updated_at":"2024-09-20T08:31:40.000Z","dependencies_parsed_at":"2022-08-15T02:31:06.256Z","dependency_job_id":null,"html_url":"https://github.com/isadon/RMessage","commit_stats":null,"previous_names":["donileo/rmessage"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isadon%2FRMessage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isadon%2FRMessage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isadon%2FRMessage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isadon%2FRMessage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isadon","download_url":"https://codeload.github.com/isadon/RMessage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228503230,"owners_count":17930545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ios","notifications","swift"],"created_at":"2024-01-05T20:16:14.287Z","updated_at":"2025-08-03T00:30:54.644Z","avatar_url":"https://github.com/isadon.png","language":"Swift","funding_links":[],"categories":["UI"],"sub_categories":["Alert \u0026 Action Sheet"],"readme":"RMessage\n==========\n\n[![Twitter: @donileo](https://img.shields.io/badge/contact-@donileo-blue.svg?style=flat)](https://twitter.com/donileo)\n[![Version](https://img.shields.io/cocoapods/v/RMessage.svg?style=flat)](http://cocoadocs.org/docsets/RMessage)\n[![License](https://img.shields.io/cocoapods/l/RMessage.svg?style=flat)](http://cocoadocs.org/docsets/RMessage)\n[![Platform](https://img.shields.io/cocoapods/p/RMessage.svg?style=flat)](http://cocoadocs.org/docsets/RMessage)\n\n## Screenshots\n\n![ErrorUnder](Screenshots/ErrorUnder.png)\n\n![SuccessUnder](Screenshots/SuccessUnder.png)\n\n![ErrorOver](Screenshots/ErrorOver.png)\n\n![WarningOver](Screenshots/WarningOver.png)\n\n# Intro\nWelcome to RMessage! RMessage is a simple notification library written in Swift to help you display notification on the screen. Many many customization options are available such as what position of the screen to present in, what colors should be applied to the title, body, background, etc, etc. There are many customizable properties and they can be viewed at the RMessageSpec protocol definition in the [RMessageSpec](https://github.com/donileo/RMessage/blob/master/Sources/RMessage/RMessageSpec.swift) file.\n\nGet in contact with the developer on Twitter: [donileo](https://twitter.com/donileo) (Adonis Peralta)\n\n# Installation\n### Swift Package Manager (SwiftPM)\nIn XCode use add the repository: https://github.com/isadon/RMessage.git and pin\nthe version to 4.0.0 with a dependency rule of your preference.\n\n### Manually\nFor manual installation copy the all the source files in the Sources folder to your project.\n\n# Usage\n\nTo show a simple notification using the predefined \"errorSpec\" styling, animating from the top do the following:\n\n```swift\n// Create an instance of RMController, a controller object which handles the presentation\n// of multiples messages on the screen\nlet rControl = RMController()\n\n// Tell rControl to present the message\nrControl.showMessage(\n      withSpec: errorSpec,\n      title: \"Your Title\",\n      body: \"A description\"\n)\n```\n\nTo show your own button on the right, an icon (UIImage) on the left and animate from the bottom do this:\n\n```swift\nlet rControl = RMController()\nrControl.showMessage(\n      withSpec: normalSpec,\n      atPosition: .bottom,\n      title: \"Update available\",\n      body: \"Please update the app\",\n      leftView: myIconImage,\n      rightView: myUIButtonHere\n)\n```\n\nTo set a default view controller to present in and bypass the \"internal presentation view controller detection\":\n\n```swift\n   let rControl = RMController()\n   rControl.presentationViewController = myViewController\n\n   ...\n\n   // All messages now presented by this controller will always be on myViewController\n   rControl.showMessage(....)\n```\n\nWant to further customize a notification message right before its presented? Do the following:\n```swift\n   let rControl = RMController()\n   rControl.delegate = self\n\n   ...\n\n   // Now lets implement the RMControllerDelegate customize(message:controller:) method which\n   // RMController calls right before presenting:\n   func customize(message: RMessage) {\n   message.alpha = 0.4\n   message.addSubview(aView)\n  }\n```\n\nFeel like declaring your own custom message stylings? Simple!\n\n```swift\nlet rControl = RMController()\n\n// Customize the message, by using the DefaultRMessageSpec as your base.\n// The DefaultRMessageSpec object is a struct with default values for a\n// \"default\" RMessageSpec styling. All we need to do is pick up the the defaults\n// from it and then just specify which variables we want customized. For a list\n// of all the possible vars take a look at its definition!\nvar customSpec = DefaultRMessageSpec()\ncustomSpec.backgroundColor = .red\ncustomSpec.titleColor = .white\ncustomSpec.bodyColor = .white\ncustomSpec.iconImage = UIImage(named: \"MyIcon.png\")\n\n// How about a custom spec based on the predefined warningSpec but with\n// attributed string attributes for the title and body text?\nvar attrWarningSpec = warningSpec\nattrWarningSpec.titleAttributes = [.backgroundColor: UIColor.red, .foregroundColor: UIColor.white]\nattrWarningSpec.bodyAttributes = [\n.backgroundColor: UIColor.blue, .foregroundColor: UIColor.white,\n.underlineStyle: NSUnderlineStyle.styleSingle.rawValue,\n]\n\n// Now lets present Tell the RMController to present the message with your custom stylings.\nrControl.showMessage(\n      withSpec: customSpec,\n      title: \"I'm custom\",\n      body: \"Nice!\"\n    )\n```\n\nWant to present a message that only disappers when tapped?\n\n```swift\nlet rControl = RMController()\n\nvar tapOnlySpec = DefaultRMessageSpec()\ntapOnlySpec.durationType = .tap\n\n// Present it\nrControl.showMessage(\n      withSpec: tapOnlySpec,\n      title: \"Tap me Tap me!\",\n      body: \"If you don't I wont dismiss!\"\n)\n```\n\nWant more examples? Take a look at the [DemoViewController](https://github.com/donileo/RMessage/blob/master/Demo/DemoViewController.swift) file in the RMessage project to see how to use this library. Its very simple.\n\n# License\nRMessage is available under the MIT license. See the LICENSE file for more information.\n\n# Recent Changes\nCan be found in the [releases section](https://github.com/donileo/RMessage/releases) of this repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisadon%2FRMessage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisadon%2FRMessage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisadon%2FRMessage/lists"}