[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6790":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":22,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},6790,"MessageKit","MessageKit\u002FMessageKit","A community-driven replacement for JSQMessagesViewController","https:\u002F\u002Fmessagekit.github.io",null,"Swift",6265,1198,124,73,0,1,8,40.24,"MIT License",false,"main",true,[24,25,26,27,28,29,30,31,32],"chat","hacktoberfest","ios","jsqmessagesviewcontroller","message","messaging","messenger","swift","viewcontroller","2026-06-12 02:01:30","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002Fmklogo.png\" title=\"MessageKit logo\" width=\"270\">\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  A community-driven replacement for JSQMessagesViewController\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fswiftpackageindex.com\u002FMessageKit\u002FMessageKit\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FMessageKit%2FMessageKit%2Fbadge%3Ftype%3Dswift-versions\"\u002F>\n  \u003Ca href=\"https:\u002F\u002Fswiftpackageindex.com\u002FMessageKit\u002FMessageKit\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FMessageKit%2FMessageKit%2Fbadge%3Ftype%3Dplatforms\"\u002F>\n  \u003Ca href=\"https:\u002F\u002Fdeveloper.apple.com\u002Fxcode\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FXcode-13-blue.svg\" alt=\"Xcode\">\n  \u003C\u002Fa>\n  \u003Ca href=\".\u002FLICENSE.md\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FMessageKit\u002FMessageKit?color=red\" alt=\"MIT\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fissues\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcontributions-welcome-brightgreen.svg?style=flat\" alt=\"Contributions Welcome\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cbr>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002FTypingIndicator.png\" title=\"MessageKit header\" width=\"400\">\n\u003C\u002Fp>\n\n## Goals\n\n- Provide a :rotating_light:safe:rotating_light: environment for others to learn and grow through Open Source.\n- Make adding Chat:speech_balloon: to a project easy.\n- Enable beautiful and customizable Chat UI's.\n- Provide an awesome Open Source project for the iOS open source community.\n- Help others learn.\n\n## Installation\n\n### [Swift Package Manager](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F) - **Recommended**\n\nSwift 5.3 in Xcode 12 [added support](https:\u002F\u002Fgithub.com\u002Fapple\u002Fswift-evolution\u002Fblob\u002Fmaster\u002Fproposals\u002F0271-package-manager-resources.md) for assets in Swift Packages.\nYou can [just add](https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fxcode\u002Fadding_package_dependencies_to_your_app) MessageKit package to your project by entering it's repository URL\n\n```\nhttps:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\n```\n\nOlder versions of Swift and Xcode don't support MessageKit via SPM.\n\n### [Manual](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FMANUAL_INSTALLATION.md)\n\n## Requirements\n\n- **iOS 14** or later\n- **Swift 6** or later\n\n> For iOS 13 or Swift 5.x please use version 4.3.0\n\n> For iOS 12 or CocoaPods please use version 3.8.0\n\n> For iOS 11 please use version 3.3.0\n\n> For iOS 9 and iOS 10 please use version 3.1.1\n\n## Getting Started\n\nPlease have a look at the [Quick Start guide](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FQuickStart.md) and the [FAQs](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FFAQs.md).\n\nWe recommend you start by looking at the [Example](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Ftree\u002Fmaster\u002FExample) project or write a question with the \"messagekit\" tag on [Stack Overflow](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002Ftagged\u002Fmessagekit). You can also look at previous issues here on GitHub with the **\"Question\"** tag.\n\nFor more on how to use the MessageInputBar, see the dependency it is based on [InputBarAccessoryView](https:\u002F\u002Fgithub.com\u002Fnathantannar4\u002FInputBarAccessoryView). You can also see this [short guide]([https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FMessageInputBar.md)\n\nCheck out the full documentation [here](https:\u002F\u002Fmessagekit.github.io\u002FMessageKit\u002Fdocumentation\u002Fmessagekit).\n\n### Cell Structure\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002FCellStructure.png\" title=\"CellStructure\">\n\u003C\u002Fp>\n\nEach default cell is a subclass of [`MessageContentCell`](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FSources\u002FViews\u002FCells\u002FMessageContentCell.swift) which has 7 parts. From top down we have a: `cellTopLabel`, `messageTopLabel`, `messageContainerView`, `messageBottomLabel`, `cellBottomLabel` with the `avatarView` and `accessoryView` on either side respectively. Above we see the basic [`TextMessageCell`](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FSources\u002FViews\u002FCells\u002FTextMessageCell.swift) which uses a `MessageLabel` as its main content.\n\nThis structure will allow you to create a layout that suits your needs as you can customize the size, appearance and padding of each. If you need something more advanced you can implement a custom cell, which we show how to do in the [Example](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Ftree\u002Fmaster\u002FExample) project.\n\n### InputBarAccessoryView Structure\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002FInputBarAccessoryViewLayout.png\" title=\"InputBarAccessoryViewLayout\">\n\u003C\u002Fp>\n\nThe `InputBarAccessoryView`, 3rd party dependency from [InputBarAccessoryView](https:\u002F\u002Fgithub.com\u002Fnathantannar4\u002FInputBarAccessoryView) is a flexible and robust way of creating any kind of input layout you wish. Check the repo and examples there for more info.\n\n## Default Cells\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002FExampleA.png\" title=\"Example A\" height=400>\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMessageKit\u002FMessageKit\u002Fmaster\u002FAssets\u002FExampleB.png\" title=\"Example B\" height=400>\n\u003C\u002Fp>\n\nThe type of cell rendered for a given message is based on the `MessageKind`\n\n```swift\npublic enum MessageKind {\n    case text(String) \u002F\u002F TextMessageCell\n    case attributedText(NSAttributedString) \u002F\u002F TextMessageCell\n    case photo(MediaItem) \u002F\u002F MediaMessageCell\n    case video(MediaItem) \u002F\u002F MediaMessageCell\n    case location(LocationItem) \u002F\u002F LocationMessageCell\n    case emoji(String) \u002F\u002F TextMessageCell\n    case audio(AudioItem) \u002F\u002F AudioMessageCell\n    case contact(ContactItem) \u002F\u002F ContactMessageCell\n    case linkPreview(LinkItem) \u002F\u002F LinkPreviewMessageCell\n\n    \u002F\u002F\u002F A custom message.\n    \u002F\u002F\u002F - Note: Using this case requires that you implement the following methods and handle this case:\n    \u002F\u002F\u002F   - MessagesDataSource: customCell(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> UICollectionViewCell\n    \u002F\u002F\u002F   - MessagesLayoutDelegate: customCellSizeCalculator(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> CellSizeCalculator\n    case custom(Any?)\n}\n```\n\nIf you choose to use the `.custom` kind you are responsible for all of the cells layout. Any `UICollectionViewCell` can be returned for custom cells which means any of the styling you provide from the `MessageDisplayDelegate` will not effect your custom cell. Even if you subclass your cell from `MessageContentCell`.\n[Read more about custom cells](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FCUSTOM_CELLS.md)\n\n[Read more about the cases on the Quick Start guide.](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FDocumentation\u002FQuickStart.md#messagekind)\n\n## Contributing\n\n[![Tests](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fworkflows\u002FTests\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Factions?query=workflow%3A%22Tests%22)\n[![Build framework](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fworkflows\u002FBuild%20Framework\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Factions?query=workflow%3A%22Build+Framework%22)\n[![Build example app](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fworkflows\u002FBuild%20Example%20app\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Factions?query=workflow%3A%22PR+Example+app%22)\n[![Danger](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fworkflows\u002FDanger\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Factions?query=workflow%3A%22Danger%22)\n\nGreat! Look over these things first.\n\n- Please read our [Code of Conduct](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FCODE_OF_CONDUCT.md)\n- Check the [Contributing Guide Lines](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md).\n- Come join us on [Slack](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fmessagekit\u002Fshared_invite\u002Fzt-2484ymok0-O82~1EtnHALSngQvn6Xwyw) and 🗣 don't be a stranger.\n- Check out the [current issues](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fissues) and see if you can tackle any of those.\n- Download the project and check out the current code base. Suggest any improvements by opening a new issue.\n- Check out the [What's Next](#whats-next) section :point_down: to see where we are headed.\n- Check [StackOverflow](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002Ftagged\u002Fmessagekit)\n- Install [SwiftLint](https:\u002F\u002Fgithub.com\u002Frealm\u002FSwiftLint) to keep yourself in :neckbeard: style.\n- Be kind and helpful.\n\n## What's Next?\n\nCheck out the [Releases](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Freleases) to see what we are working on next.\n\n## Contact\n\nHave a question or an issue about MessageKit? Create an [issue](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fissues\u002Fnew)!\n\nInterested in contributing to MessageKit? Click here to join our [Slack](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fmessagekit\u002Fshared_invite\u002FMjI4NzIzNzMyMzU0LTE1MDMwODIzMDUtYzllYzIyNTU4MA).\n\n### Apps using this library\n\nAdd your app to the list of apps using this library and make a pull request.\n\n- [ClassDojo](https:\u002F\u002Fwww.classdojo.com)\n- [Coursicle](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fcoursicle\u002Fid1187418307)\n- [Connect Messaging](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fid1607268774)\n- [Ring4](https:\u002F\u002Fwww.ring4.com)\n- [Formacar](https:\u002F\u002Fitunes.apple.com\u002Fru\u002Fapp\u002Fid1180117334)\n- [HopUp](https:\u002F\u002Fitunes.apple.com\u002Fus\u002Fapp\u002Fhopup-airsoft-community\u002Fid1128903141?mt=8)\n- [MediQuo](https:\u002F\u002Fwww.mediquo.com)\n- [RappresentaMe](https:\u002F\u002Fitunes.apple.com\u002Fit\u002Fapp\u002Frappresentame\u002Fid1330914443)\n- [WiseEyes](https:\u002F\u002Fitunes.apple.com\u002Fus\u002Fapp\u002Fwiseeyes\u002Fid1391408511?mt=8)\n- [SwiftHub](https:\u002F\u002Fgithub.com\u002Fkhoren93\u002FSwiftHub)\n- [Studievenn](https:\u002F\u002Fstudievenn.no)\n- [SmooveText](https:\u002F\u002Fapps.apple.com\u002Fnp\u002Fapp\u002Fsmoove-text\u002Fid1362792811)\n- [COYO Engage](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fcoyo-engage\u002Fid1341588804)\n- [HitchPin](https:\u002F\u002Fwww.hitchpin.com)\n- [Charge Running](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fcharge-running-live-coaching\u002Fid1204578360)\n- [HER](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fid573328837)\n- [Girlfriend Plus](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fgirlfriend-plus\u002Fid1011637655)\n- [Noon Happen](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fid1477310602)\n- [XPASS](https:\u002F\u002Fapps.apple.com\u002Fcz\u002Fapp\u002Fid1596773834)\n- [HeiaHeia](https:\u002F\u002Fwww.heiaheia.com)\n- [Starstruck AI](https:\u002F\u002Fapps.apple.com\u002Fau\u002Fapp\u002Fstarstruck-message-anyone\u002Fid6446234281)\n- [OutyPlay](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fid6450551793)\n- [SkateConnect](https:\u002F\u002Fskateconnect.app)\n\n_Please provide attribution, it is greatly appreciated._\n\n## Core Team\n\n- [@SD10](https:\u002F\u002Fgithub.com\u002Fsd10), Steven Deutsch\n- [@nathantannar4](https:\u002F\u002Fgithub.com\u002Fnathantannar4), Nathan Tannar\n- [@zhongwuzw](https:\u002F\u002Fgithub.com\u002Fzhongwuzw), Wu Zhong\n- [@austinwright](https:\u002F\u002Fgithub.com\u002Faustinwright), Austin Wright\n- [@kaspik](https:\u002F\u002Fgithub.com\u002Fkaspik), Jakub Kaspar\n- [@martinpucik](https:\u002F\u002Fgithub.com\u002Fmartinpucik), Martin Pucik\n\n## Thanks\n\nMany thanks to [**the contributors**](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fgraphs\u002Fcontributors) of this project.\n\n## License\n\nMessageKit is released under the [MIT License](https:\u002F\u002Fgithub.com\u002FMessageKit\u002FMessageKit\u002Fblob\u002Fmaster\u002FLICENSE.md).\n\n## Inspiration\n\nInspired by [JSQMessagesViewController](https:\u002F\u002Fgithub.com\u002Fjessesquires\u002FJSQMessagesViewController) :point_left: :100:\n","MessageKit 是一个用于构建聊天界面的 iOS 开源库，旨在替代 JSQMessagesViewController。它使用 Swift 编写，支持高度自定义的消息布局和样式，包括文本、图片、视频等多种消息类型，并提供了丰富的内置功能如输入指示器等，以简化开发过程。此外，MessageKit 还特别注重安全性和易用性，通过提供详尽文档与示例项目来帮助开发者快速上手。适用于需要集成即时通讯功能的应用场景，比如社交软件、客服系统等。",2,"2026-06-11 03:08:55","top_language"]