Vivi
Vivi is a XMPP chatting client at OS X. Swiften is used as XMPP client library to communicate with XMPP server.
The main language is Swift language. All UI code is programed with Swift. However, the XMPP tool is written with Objective-C and C++, since Swiften is a C++ based lib. The Objective-C and C++ codes are all included in ViviSwiften.framework. The framework provide the protocol for Swift based UI code. As a result, you can implement the protocol of the framework to write your own XMPP client GUI.
Version 1.0 Features
Here list all features would be implement in Vivi version 1.0.
- Single chat window.
- Window split.
- Notification and reply on notification bar.
- Contact tag.
- AIML Chat bot assistant.
- File transfer.
- Voice transfer in one button.
- Voice call.
If you have any seggestion or report a bug, please create an issue at GitHub.
Compile Swiften
Before starting to code, compile the Swiften lib firstly.
-
If you have not installed
libboost*
(check withls /usr/local/lib | grep boost
), run below in bash:./setupSwiften.sh
-
If you have installed
libboost*
, still run the command above, and you need to add/usr/local/include/boost
and/usr/local/lib/
toHeader Search Paths
andLibrary Search Paths
in Xcode Building Settings.
Read SwiftXMPP/Documentation/BuildingOnUnix
for more details about compiling Swiften.
Some Issues
If it occurred to be some linker error or compile error about Swiften when building Xcode target, please check your linker and c flag settings flow below steps:
- In xcodeproject porject settings
Build Settings
tab, check the value ofHeader Search Paths
andLibrary Search Paths
(use the search tool in Build Settings to search the defines). They should point to the dir include Swiften's source dirSwiften
and librarySwifetn.a
. - In xcodeproject porject settings
Build Settings
tab, check the value ofSWIFTEN_LINKER_FLAGS
andSWIFTEN_C_FLAGS
.
The Swiften provide a tool to print the linker and c flag messages:
cd Frameworks/bin
./swiften-config --libs # print to be linked libs
./swiften-config --cflag # print c++ flags
# ignore the -LXXX or -IXXX output, it has been set in 'Build Phase' and 'Header Search Paths'
Development
This client is developed by Junyuan Hong (jyhong836@gmail.com), started at Jul 22, 2015. If you want to take part in development, just contact me.