{"id":13669677,"url":"https://github.com/hilen/TSWeChat","last_synced_at":"2025-04-27T04:34:15.658Z","repository":{"id":37754131,"uuid":"52660585","full_name":"hilen/TSWeChat","owner":"hilen","description":"A WeChat alternative. Written in Swift 5.","archived":false,"fork":false,"pushed_at":"2019-07-28T08:57:46.000Z","size":29643,"stargazers_count":3769,"open_issues_count":23,"forks_count":783,"subscribers_count":151,"default_branch":"master","last_synced_at":"2025-04-13T23:54:09.645Z","etag":null,"topics":["alamofire","audio","json","keyboard","project","rxswift","snapkit","swift-3","ui","wechat"],"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/hilen.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":"2016-02-27T10:01:20.000Z","updated_at":"2025-04-13T07:01:48.000Z","dependencies_parsed_at":"2022-07-14T21:46:56.330Z","dependency_job_id":null,"html_url":"https://github.com/hilen/TSWeChat","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilen%2FTSWeChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilen%2FTSWeChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilen%2FTSWeChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilen%2FTSWeChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hilen","download_url":"https://codeload.github.com/hilen/TSWeChat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251089408,"owners_count":21534511,"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":["alamofire","audio","json","keyboard","project","rxswift","snapkit","swift-3","ui","wechat"],"created_at":"2024-08-02T08:01:22.209Z","updated_at":"2025-04-27T04:34:10.647Z","avatar_url":"https://github.com/hilen.png","language":"Swift","readme":"\u003cimg src=\"./images/logo.png\" alt=\"TSWeChat\" title=\"TSWeChat\"/\u003e\n\n\u003ca href=\"https://github.com/hilen/TSWeChat\"\u003e\u003cimg src=\"https://img.shields.io/travis/rust-lang/rust.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://swift.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Swift-compatible-orange.svg\"\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/badge/platform-iOS%208.0%2B-ff69b4.svg\"\u003e\n\u003ca href=\"https://github.com/hilen/TSWeChat/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-green.svg?style=flat\"\u003e\u003c/a\u003e\n\u003ca href=\"http://twitter.com/hilenlai\"\u003e\u003cimg src=\"https://img.shields.io/badge/twitter-@hilenlai-blue.svg?style=flat\"\u003e\u003c/a\u003e\n\nTSWeChat - A [WeChat](https://itunes.apple.com/cn/app/wei/id414478124) alternative, updated to Swift 5. \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[中文说明](Chinese_README.md)\n\n## Requirements\n- [Cocoapods](https://github.com/CocoaPods/CocoaPods) 1.2.0 +\n- iOS 10.0+ / Mac OS X 10.9+\n- Xcode 10.0+\n\n\n## Features\n- Send your rich text, expression, image and voice.\n- The cell image in `TSChatImageCell` is drawn by using `Mask Layer` . The chat background can be changed freely so that UI will look perfect.\n- Custom expression keyboard, custom tool keyboard.\n- Audio `wav` files can be automatically converted into `amr` files which facilite file transfer to Android devices. Both of the two type files have been doing cache.\n- When you tap the `TSChatVoiceCell`. It will automatically check the cache and download it by [Alamofire](https://github.com/Alamofire/Alamofire). \n- When you send the image, it will be stored locally by using the caching mechanism of [Kingfisher](https://github.com/onevcat/Kingfisher). After successfully uploaded, it will be automatically modified to image link's `MD5` value file name.\n- The data are loaded from the JSON file. All the `Models` are created via [ObjectMapper](https://github.com/Hearst-DD/ObjectMapper) which is easy to convert model objects (classes and structs) from JSON.\n\n\n\n## Preview\nRun `pod install` in the `Terminal` and then run `TSWeChat.xcworkspace` to see all the views.\u003cbr\u003e\u003cbr\u003e\n![](images/preview1.gif)\n\n![](images/preview2.gif)\n\n![](images/preview3.gif)\n\n## Directory\n\nDirectory name|Introduction\n---|---\nClasses| To deposit different folders like `ViewController`, `View`. Sub directories are divided based on business logic, Such as `Message`,`Address Book`,`Tabbar`,`Me`,`Login` and etc, divided according to their functions. \nClasses/CoreModule| To deposit encapsulation of business logic of basic classes, like HttpManager, Models, ApplicationManager and etc.\nGeneral|To deposit reused `View and Class` related with business logic, such as color extension.\nHelpers|Non-business logic extension, such as: `UIView+Extension.swift`, `UIImage+Resize.swift` and etc.\nMacro|To deposit macros and constant definitions used in the whole application, such as ` Notifications ` name , and  the third party librarie's keys.\nResources| Resources. Such as `Assets.xcassets`, `Media.xcassets`, `JSON files`, `media files`, `plist files` and etc.\nVendor| To deposit the third party liabraries that cannot be installed by `Cocoapods`.\nSupporting Files| To deposit the original files\nScripts| APNs script, export IPA file script and etc.\nSketch| To deposit the original Sketch files. All the recourses in the project are come from the WeChat IPA folder, but some images I can't find. So I decided to do it myself. Yeah, I love design, sometimes coder become a designer is feeling good. XD\n\n\n## Vendor\n[See more details](https://github.com/hilen/TSWeChat/blob/master/Podfile)\n\n## License\nTSWeChat is released under the MIT license. See [LICENSE](https://github.com/hilen/TSWeChat/blob/master/LICENSE) for details.\n\n## To Do\n- The custom photo album\n- WeChat custom ActionSheet\n- Long press the chat cell\n- The image viewer\n- Address book\n- GIF image cell in TSChatViewController\n- QRCodeViewController\n- ShakeViewController\n- Send my address\n- Video cell in TSChatViewController\n- TimelineViewController\n- Multilanguage support\n- And so on...\n\n## Contributing\n- All kinds of contributions (enhancements, new features, documentation \u0026 code improvements, issues \u0026 bugs reporting \u0026 todo task) are welcome. Let's make it better. XD\n\n\n\n\n","funding_links":[],"categories":["Swift","Communication"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilen%2FTSWeChat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhilen%2FTSWeChat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilen%2FTSWeChat/lists"}