QuickBlox / q-municate-ios

Q-municate iOS repository
http://q-municate.com
MIT License
163 stars 86 forks source link
audio cache chat chat-dialogs chatapp easy facebook fast ios messaging objective-c quickblox quickblox-api siri swift video video-call webrtc whatsapp xmpp

Source code removed from the public access, if you are interested in Q-municate please contact us

Q-municate is an open source code of chat application with full range of communication features on board (such as messaging, file transfer, push notifications, audio/video calls, etc.). We are inspired to give you chat application out of the box. You can customise this application depending on your needs. As always QuickBlox backend is at your service: https://quickblox.com/plans/ Find the source code and more information about Q-municate, as well as installation guide, in our Developers section: https://quickblox.com/developers/q-municate This guide is brought to you from QuickBlox iOS team in order to explain how you can build a communication app on iOS using QuickBlox API. It is a step by step guide designed for all developer levels including beginners as we move from simple to more complex implementation. Depending on your skills and your project requirements you may choose which parts of this guide are to follow. Enjoy and if you need assistance from QuickBlox iOS team feel free to let us know by creating an issue. Q-municate is a fully fledged chat application using the Quickblox API.

1. Requirements & Software Environment

1.1 QuickBlox iOS SDK

CocoaPods CocoaPods CocoaPods

QuickBlox - Communication & cloud backend platform which brings superpowers to your mobile apps.

1.2 WebRTC

CocoaPods CocoaPods CocoaPods

Q-municate uses WebRTC for video and audio calling meaning it’s a great cross-platform solution. WebRTC itself it open-source, so you can modify the code as much as you wish, or you can trust the thousands of skilled developers who contributed to it’s development.

The VideoChat code sample allows you to easily add video calling and audio calling features into your iOS app. Enable a video call function similar to FaceTime or Skype using code sample as a basis.

2. QuickBlox modules

Q-municate application uses following:

3. Features

It includes such features as:

Please note all these features are available in open source code, so you can customise your app depending on your needs.

4. Screens

4.1 Welcome

Figure 4.1 Welcome screen

Available features:

Please note, that there is no longer a possibility to sign up user using email and password method. You can only sign up using Phone number and/or Facebook credentials.

4.2 Login with email/password

Figure 4.2 Login with email screen

Available features:

4.3 Forgot password

Figure 4.3 Forgot password screen

4.4 Tab Bar

Tab bar is a main controller of the application. It consists of such pages:

4.5 Chat Dialogs List

Figure 4.4 Dialogs screen

4.6 New Message

Figure 4.5 New message screen

If you will select only 1 contact - private chat will be opened (if existent) or created if needed. Otherwise group chat will be created.

4.7 Chat

There is a possibility to send:

Available features:

4.8 Private Chat

Figure 4.6 Private chat screen

Buttons:

4.9 Group Chat

Figure 4.7 Group chat screen

Buttons:

4.10 Group Chat Info

Figure 4.8 Group chat info screen

Fields/Buttons:

4.11 Contacts List

Figure 4.9 Contacts list screen

Search:

Figure 4.10 Search screen

4.12 User Info

Figure 4.11 User info screen

Fields/Buttons

Other user actions:

4.13 Settings

Figure 4.12 Settings screen

Fields/Buttons:

Figure 4.13 User status screen

Figure 4.14 Feedback screen

5. Audio and Video Calls

Q-municate using QuickBlox WebRTC SDK as call service. You can find more information on it here.

5.1 Calls controller

Call controller has 6 states:

Call controller is been managed by QMCallManager, basically call manager allocating it with a specific state, whether it is an incoming or outgoing call, then call controller changing its state to active one if required user accepts it.

5.2 Audio Call

You can see down below Incoming, outgoing and active audio call screens.

Figure 5.1 Audio call screen

Toolbar buttons

5.3 Video Call

You can see down below Incoming, outgoing and active video call screens.

Figure 5.1 Video call screen

By default sound for video calls is in speakers.

5.4 Call Kit

CallKit allows to integrate calling services with other call-related apps on the system. CallKit provides the calling interface, and we handle the back-end communication with our VoIP service. For incoming and outgoing calls, CallKit displays the same interfaces as the Phone app, giving Q-municate application a more native look and feel.

Figure 5.1 Call controller screen

6. Extensions

6.1 Share extension

Share extension gives users a convenient way to share content with other entities. Available types for sharing:

Figure 6.1 Share extension screen

6.2 Intents App Extension(SiriKit for messaging)

An Intents app extension receives user request to send a message from SiriKit and turns it into app-specific actions.

Figure 6.2 Sending message via SIRI screen

7. Code explanation

You can see basic code explanation down below. For detailed one please see our inline documentation for header files in most classes. We have tried to describe as detailed as possible the purpose of every class and its methods. If you have any questions, feel free to let us know by creating an issue.

7.1 Storyboards

We have separated Q-municate for modules, such as:

Each module has its own storyboard, all storyboards are linked with storyboard links (feature available since Xcode 7 and iOS 8+).

8. How to build your own Chat app

If you want to build your own app using Q-municate as a basis, please follow our detailed guide here.

9. Contributing

Features

  1. Fork it ( https://github.com/[my-github-username]/q-municate-ios/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'My new feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Issues

If you find an issue, please create an issue.

10. License

Apache License, Version 2.0. See LICENSE file.