{"id":18603730,"url":"https://github.com/abdullahselek/swiftymessenger","last_synced_at":"2025-08-21T00:08:02.230Z","repository":{"id":62456954,"uuid":"133527845","full_name":"abdullahselek/SwiftyMessenger","owner":"abdullahselek","description":"Swift toolkit for passing messages between iOS apps and extensions.","archived":false,"fork":false,"pushed_at":"2021-02-09T19:39:16.000Z","size":3287,"stargazers_count":61,"open_issues_count":1,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-26T18:50:00.245Z","etag":null,"topics":["app-extension","carthage","cocoapods","inter-process-communication","ios","ios-extension","listen-messages","watchconnectivity-framework","xcode"],"latest_commit_sha":null,"homepage":null,"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/abdullahselek.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":"2018-05-15T14:25:35.000Z","updated_at":"2024-05-08T21:45:13.000Z","dependencies_parsed_at":"2022-11-01T22:46:39.566Z","dependency_job_id":null,"html_url":"https://github.com/abdullahselek/SwiftyMessenger","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/abdullahselek/SwiftyMessenger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwiftyMessenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwiftyMessenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwiftyMessenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwiftyMessenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abdullahselek","download_url":"https://codeload.github.com/abdullahselek/SwiftyMessenger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwiftyMessenger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271405572,"owners_count":24753799,"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","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["app-extension","carthage","cocoapods","inter-process-communication","ios","ios-extension","listen-messages","watchconnectivity-framework","xcode"],"created_at":"2024-11-07T02:15:16.960Z","updated_at":"2025-08-21T00:08:02.211Z","avatar_url":"https://github.com/abdullahselek.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![SwiftyMessenger CI](https://github.com/abdullahselek/SwiftyMessenger/workflows/SwiftyMessenger%20CI/badge.svg)](https://github.com/abdullahselek/SwiftyMessenger/actions)\n[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/SwiftyMessenger.svg)](http://cocoapods.org/pods/SwiftyMessenger)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n![Platform](https://img.shields.io/cocoapods/p/SwiftyMessenger.svg?style=flat)\n![License](https://img.shields.io/dub/l/vibe-d.svg)\n\n```\n    _________ ___          ___  _   _____  _________ ___    ___\n   /        / \\  \\        /  / |_| ( ___ \\ \\__   __/ \\  \\  /  /\n  /   _____/   \\  \\  /\\  /  /  | | | (  \\/    ) (     \\  \\/  /\n  \\_____  \\     \\  \\/  \\/  /   | | | (_       | |      \\    /\n  /        \\     \\  ____  /    | | |  _)      | |       )  (\n /_______ /       \\/    \\/     |_| | (        | |       |  |\n        \\/                         | )        )_(       |__|\n                                   |/\n      _____        ______    ________  ________  ______   __      __     _____      ______  _________\n     /     \\      (  ____\\  /       / /       / (  ____\\ |  \\    |  |   /     \\    (  ____\\ \\______  \\\n    /       \\     | (      /   ____/ /   ____/  | (      |  |\\   |  |  /   ____\\   | (       |        \\\n   /  /\\ /\\  \\    | (__    \\_____ \\  \\_____ \\   | (__    |  | \\  |  | /   /__/  |  | (__     |    |____\\\n  /  /  Y  \\  \\   |  __)   /       \\ /       \\  |  __)   |  |  \\ |  | \\______   /  |  __)    |     \\\\\n /  /       \\  \\  | (     /_______/ /_______/   | (      |  |   \\|  |  _____/  /   | (       |    | \\\\\n |_/         |__| | (___/\\      \\/        \\/    | (___/\\ |__|    |__| |_______/    | (___/\\  |____| |_|\n                  (______/                      (______/                           (______/\n```\n\n# SwiftyMessenger\n\nSwift toolkit for passing messages between iOS apps and extensions. It creates a bridge between container app and iOS extensions. SwiftyMessenger archives messages in files which are written to the application's shared App Group. SwiftyMessenger resembles interprocess communication between the app and the extension without a interprocess communication.\n\nIt also supports CFNotificationCenter Darwin Notifications in an effort to support realtime change notifications. When a message passed, interested parties can listen and can be notified (almost instant) of these changes on both side.\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"Resources/SwiftyMessenger.gif\") alt=\"Sample App\"/\u003e\n\u003c/p\u003e\n\n## Requirements\n\n| SwiftyMessenger Version | Minimum iOS Target | Minimum watchOS Target | Swift Version |\n|:--------------------:|:---------------------------:|:---------------------------:|:--------------------:|\n| 0.4.0 | iOS 10 | watchOS 3.0 | Swift 5.x |\n| 0.2 | iOS 9 | watchOS 2.0 | Swift 4.2 |\n| 0.1 | iOS 9 | watchOS 2.0 | Swift 4.1 |\n\n### NOTE\n\nSwiftyMessenger can only work with App Group identifiers and Entitlements.\n\n## CocoaPods\n\nCocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:\n```\n$ gem install cocoapods\n```\n\nTo integrate SwiftyMessenger into your Xcode project using CocoaPods, specify it in your Podfile:\n```\nsource 'https://github.com/CocoaPods/Specs.git'\nplatform :ios, '10.0'\nuse_frameworks!\n\ntarget '\u003cYour Target Name\u003e' do\n\tpod 'SwiftyMessenger', '~\u003e0.4.0'\nend\n```\n\n## Carthage\n\nCarthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.\n\nYou can install Carthage with Homebrew using the following command:\n\n```\nbrew update\nbrew install carthage\n```\n\nTo integrate SwiftyMessenger into your Xcode project using Carthage, specify it in your Cartfile:\n\n```\ngithub \"abdullahselek/SwiftyMessenger\" ~\u003e 0.4.0\n```\n\n## Swift Package Manager\n\nModify your Package.swift file to include the following dependency:\n\n```\n.package(url: \"https://github.com/abdullahselek/SwiftyMessenger.git\", from: \"0.4.0\")\n```\n\n## XCFramework\n\nXCFrameworks require Xcode 11 or later and integration is very similar to integration of .framework format. Please use script [scripts/build-framework.sh](scripts/build-framework.sh) to generate binary SwiftyMessenger.xcframework archive that you can use as a dependency in Xcode.\n\nSwiftyMessenger.xcframework is a Release (Optimized) binary that offer best available Swift code performance.\n\n## Usage\n\n**Initialization**\n\n```\nmessenger = Messenger(withApplicationGroupIdentifier: \"group.com.abdullahselek.swiftymessenger\", directory: \"messenger\")\n```\n\n**Passing message**\n\n```\nmessenger.passMessage(message: [\"selectedCell\": title], identifier: \"selection\")\n```\n\n**Reading message**\n\n```\nif let message = messenger.messageForIdentifier(identifier: \"button\") as? [String: Any] {\n\tlet buttonTitle = message[\"buttonTitle\"] as? String\n}\n```\n\n**Listen message changes with identifier**\n\n```\nmessenger.listenForMessage(withIdentifier: \"button\") { message in\n    guard let message = message as? [String: Any] else {\n        return\n    }\n    let buttonTitle = message[\"buttonTitle\"] as? String\n}\n```\n\n## Support for WatchConnectivity\n\nSwiftyMessenger suports **WatchConnectivity** provided by Apple on **watchOS** extensions.\n\nHere are two little notes you need to know if you want to use WatchConnectivity support in your app:\n\n- `MessengerSession` is a singleton subclass that supports listening for WatchConnectivity messages. It can be used to listen `Messenger` messages you expect to receive from the WatchConnectivity framework. Be sure to activate the session once your listeners are set so that you can begin receiving message notifications.\n\n- You can use `MessengerSessionContextTransiting` when creating your messenger, but it can easily overload the pipeline by sending too many messages at once.\n\n## Transiting Types\n\nYou can find 5 available types under **TransitingType**.\n\n- `file` (Message transiting by archiving and unarchiving messages that are written and read to files)\n- `coordinatedFile` (Uses FileCoordinator)\n- `sessionContext` (Support for the WatchConnectivity framework's Application Context)\n- `sessionMessage` (Support for the WatchConnectivity framework's real time message passing ability)\n- `sessionFile` (Support for the WatchConnectivity framework's file transfer ability)\n\n## License\n\nSwiftyMessenger is released under the MIT license. See LICENSE for details.\n\n## Credits\n\nInspired by MutualMobile. Improved and all coded in new programming language Swift.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdullahselek%2Fswiftymessenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdullahselek%2Fswiftymessenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdullahselek%2Fswiftymessenger/lists"}