An open-source version of iPhone's native Messages app
Currently, AcaniChat features message persistence with Core Data and a chat view that allows you to send chat bubbles to yourself. Next, we'll implement sending messages over the network through the Acani chat server.
- ConversationsViewController: List of conversations (
UITableViewController
) - ChatViewController: One-on-one Chat (
UIViewController
)- chatContent (
UITableView
)- Identical UI (colors, layout, and font size) to iPhone's Messages app
- Conditional timestamps (only shown every so often)
- Delete edit-mode: Delete one message at a time or clear all at once
- Trims whitespace on ends of messages; prevents sending blank messages
- chatInput (
UITextView
)sendButton.enabled = [chatInput isEmpty] ? NO : YES
- Collapses & expands (between one & four lines) with content
- becomes scrollable after content exceeds four lines
- chatContent (
-
UIKit
UINavigationController
- Custom
UITableViewCell
s - Core Data
-
Coming Soon
- ZTWebSocket & AsyncSocket
AcaniChat is simple yet modular, implementation-agnostic, and extensible.
- Create views programmatically
AcaniChat will implement authentication through various third-party accounts, such as Facebook, Twitter, GitHub, etc.
AcaniChat will soon be able to connect to web servers that support HTML5 WebSockets. It will use ZTWebSocket, built on top of AsyncSocket, to support a WebSockets connection.
Using [Node.js][] & [node-websocket-server][], we built a chat server called [acani-chat-server][] (coming soon) that supports HTML5 WebSockets connections.
The Acani chat server uses [Redis][] & the [Redis PUB/SUB functions][] to implement chat. Each user subscribes to the channel named after her username.
- Matt Di Pasquale
- Peng Wan
- Abhinav Sharma
- Nick LeMay
- Eugene Bae
- Krystof Celba