Skip to content
This repository

An open-source version of iPhone's native Messages app

branch: master
README.md

Acani

Native iPhone Messages.app with WebSocket & Bonjour over Bluetooth

Acani Conversations Screenshot      Acani Messages Screenshot

Technology

Client (iOS)

  • 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) uses ws. And, I didn't want the extra backwards compatibility that Socket.io offers.
  • Redis to store messages in a list
Installation
Hosting

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.

Getting Started

Acani 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/Acani.git
cd Acani
git submodule update --init
open Acani.xcodeproj

License

Acani, 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

Contributors

Related Projects & Links

Something went wrong with that request. Please try again.