- UIKit framework, mainly
UINavigationController
&UITableViewController
, to display conversations & messages - Copied images from Apple's ChatKit.framework to beautify the UI
- Core Data framework to persist conversations & messages (stores them to disk in an SQLite file)
- SocketRocket to communicate with the server via WebSocket
- Coming soon: Bonjour over Bluetoothh for peer-to-peer (p2p) communication
- Note: Ability to delete messages was removed after commit b269281 to keep things simple
Server (Node.js)
- Nodejitsu-hosted instance of acani-chat-server
- Node.js
ws
module to communicate with clients via WebSocket- I chose
ws
because I think Socket.io (recommended by the Node.js website) usesws
. And, I didn't want the extra backwards compatibility that Socket.io offers.
- I chose
- Redis to store messages in a list
- Install Node.js & NPM from http://nodejs.org
- Install Redis from http://redis.io or via
brew install redis
.
Heroku doesn't support websockets yet, so I went with nodejitsu. modulus.io is another option. To host with nodejitsu, follow http://nodejitsu.com/paas/getting-started.html.
AcaniChat uses Objective-C literals, so make sure you have Xcode 4.5 or later, which you can download from iOS Dev Center : Beta Downloads.
git clone https://github.com/acani/AcaniChat.git
cd AcaniChat
git checkout edge
git submodule update --init
open AcaniChat.xcproj
AcaniChat, except for those images copied from Apple's ChatKit.framework, is released under the MIT License.
How to find Apple's ChatKit.framework images, e.g.:
find /Applications/Xcode.app/ -name *.png
find /Applications/Xcode.app/ -name SendButton.png
open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/System/Library/PrivateFrameworks/ChatKit.framework
- Matt Di Pasquale
- Peng Wan
- Abhinav Sharma
- Nick LeMay
- Eugene Bae