iOS - Real-time messaging app 🎨

Overview

General

mChat is a real-time messaging app written in Swift for iOS devices. Since mChat uses a fast and reliable Firebase Database, it receives data instantly, which makes a messaging process better among its users. Moreover, it uses a Mapbox API that provides different styles of the map, making it an unforgettable experience for users. The app design is inspired by Telegram Messenger.

       

       

Requirements

  • Xcode version 11.2.1+
  • Swift 5
  • iPhone 8 or higher
  • iOS 13.0+

Functionality

  • Real-time chat
  • User online indicator
  • Sending text messages
  • Unlimited length of text messages
  • Sending image messages
  • Sending video messages
  • Sending audio messages
  • Typing indicator
  • Messages status indicator
  • Delete messages
  • Reply to / Forward messages
  • Custom chat design
  • Chat pagination
  • Friend network
  • Locate friends on a map (if they have disabled an anonymous mode)
  • Custom map design
  • Change email / password
  • Change profile image

How to install?

  1. Install CocoaPods
  2. Open Terminal and run pod install directly in mChat/Messenger folder.
  3. In order for Firebase to work, create a new project for your application.
  4. Download GoogleService-Info.plist from your newly created Firebase project and replace it with the old one. screenshot
  5. Enable Email/Password authentication method
  6. Create Realtime Database
  7. Set Realtime Database rules to:
{
  "rules": {
     ".read": true,
     ".write": true     
  }
}
  1. Enable your Firebase Storage
  2. For using Mapbox, create a new token
  3. Create a new key named MGLMapboxAccessToken in your Info.plist and insert access token as a value. More Info

       

Credits

       

License

Copyright 2020 VITALIY PALIY

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

Comments
  • some file are missing

    some file are missing

    "import Lottie" it gives me an error with no such module Lottie written "import Firebase" it gives me an error with Couldn't build Objective-C module "firebase" #import <FirebaseCore/FirebaseCore.h> this file are missing

    opened by framarini02 18
  • App Crash

    App Crash

    Hi Sir,

    I have cloned this app and made the necessary changes (install pods, addition of Google info plist file, creation of database and storage in firebase, mapbox token). When I run it, the app crahses and shows following error message on Appdelegate: Screenshot 2020-12-05 at 1 36 25 AM

    When I go into Exception backtrace thread, it points out to AuthNetworking.Swift (setupUserinfo) function, line 59: Database.database().reference().child("users").child(uid).observeSingleEvent(of: .value) And also in scene delegate line 30: authNetworking.setupUserInfo(uid) { (isActive) in

    opened by avihsb28 5
  • Problem with accept/reject friend request button

    Problem with accept/reject friend request button

    This is the same issue as #18 , But the solution was never posted.

    From: FriendRequestCell.Swift
    
    private func setupAcceptButton() {
    		
    		
            acceptButton.translatesAutoresizingMaskIntoConstraints = false
            acceptButton.setTitle("ACCEPT", for: .normal)
            acceptButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 12)
            let gradient = setupGradientLayer()
            gradient.frame = bounds
            acceptButton.layer.insertSublayer(gradient, at: 0)
            acceptButton.tintColor = .white
            acceptButton.layer.cornerRadius = 12
            acceptButton.layer.masksToBounds = true
    		
    
    		debugPrint("*** Marker 10")
    		acceptButton.addTarget(self, action: #selector( addButtonPressed), for: .touchUpInside)
                     debugPrint("*** Marker 11")
    		addSubview(acceptButton)
            let constraints = [
                acceptButton.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -16),
                acceptButton.bottomAnchor.constraint(equalTo: centerYAnchor),
                acceptButton.widthAnchor.constraint(equalToConstant: 75),
                acceptButton.heightAnchor.constraint(equalToConstant: 20)
            ]
    		
            NSLayoutConstraint.activate(constraints)
    		//addButtonPressed()
        }
    
    

    accecpt.addTarget is the issue. Nothing happens when touched. The syntax seems to correct. The order seems to be correct as well. I question the location of it, though. Or is it something simple?

    Marker 10 and 11 do show up without error.

    opened by n9lvc5 3
  • Unexpectedly found nil in getUsersList

    Unexpectedly found nil in getUsersList

    After clicking on "Add Friends" it find's nil in the following function unexpectedly.
    This also happens in the demo app (master branch).

     private func getUsersList() {
            userListNetworking.fetchUsers { usersList in
                let sortedUserList = Array(usersList.values).sorted { (friend1, friend2) -> Bool in
                    return friend1.name < friend2.name.     //Xcode showing the nil here
                }
                self.users = sortedUserList
                self.blankLoadingView.isHidden = true
                self.tableView.reloadData()
            }
        }
    
    opened by LoopingLouieX 1
  • App Halted

    App Halted

    After setup the Firebase, successfully build the project, app will be halted after these pages. How to figure it out? Is that related to the Firebase read/write right?

    截屏2022-03-14 下午6 36 54

    截屏2022-03-14 下午6 37 26

    opened by Ligmon 12
  • Mapbox

    Mapbox

    building for iOS Simulator, but linking in dylib built for iOS, file '/Users/charliemallia/Downloads/Messenger/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Mapbox' for architecture arm64

    opened by CharlieMallia 0
Owner
Vitaliy Paliy
Vitaliy Paliy
Linphone is an open source softphone for voice and video over IP calling and instant messaging

Linphone is an open source softphone for voice and video over IP calling and instant messaging. It is fully SIP-based, for all calling, presence and I

Infinitaz 0 Jun 30, 2022
Flash Chat is an Internet-based messaging application similar to WhatsApp

Flash Chat is an Internet-based messaging application similar to WhatsApp. A service called Firebase Firestore is used as the backend database to store and retrieve our messages from the cloud.

Matias Adrián Molina 1 May 20, 2022
MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift

About MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift. Centred around a single UIViewController, MessengerKit is themeable

Stephen Radford 1.5k Jan 2, 2023
iOS - Real-time messaging app 🎨

General mChat is a real-time messaging app written in Swift for iOS devices. Since mChat uses a fast and reliable Firebase Database, it receives data

Vitaliy Paliy 569 Nov 28, 2022
A collaborative Augmented Reality iOS experience using Real-time Messaging

Collaborative AR Experience This project creates an augmented reality experience where you can build a scene together with anyone around the world, se

Agora.io Community 9 Dec 1, 2022
A Flutter powered messaging app including Firebase registration, authentication and group messaging feature.

we_chat A Flutter powered messaging app including Firebase registration, authentication and group messaging feature. Getting Started This project is a

Yamin Arafat 0 Jan 10, 2022
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

Keith Bromley 7 Oct 10, 2022
iOS app that shows real-time information about subway train arrivals in Seoul, South Korea.

NextTrain iOS app that shows real-time information about subway train arrivals in Seoul, South Korea. The app was implemented using clean code and TDD

null 4 Nov 18, 2021
Cardshark is an iOS card counting App that uses state of the art machine learning (YOLO) to classify and count the cards at real time.

Cardshark The game of Blackjack is one of the most popular casino games in the world. It is also the most winnable using a skill called Card Counting.

Eric Miao 1 Jan 23, 2022
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multi-platform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usef

Keith Bromley 4 Dec 24, 2022
The demo app demonstrates a real-time application using FindSurface to search point clouds, which ARKit provides, for geometry shapes.

FindSurface-GUIDemo-iOS (Swift) CurvSurf FindSurface™ GUIDemo for iOS (Swift) Overview This demo app demonstrates a real-time application using FindSu

CurvSurf 0 Nov 28, 2022
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 369 Nov 26, 2022
Real time chat app written in Swift 5 using Firebase

Quick Chat for iOS Quick Chat for iOS is a real time chat app written in Swift 5 using Firebase. Quick Chat allows to send and receive text messages,

Henry Aslanyan 1.8k Dec 10, 2022
ActionCable is a new WebSockets server being released with Rails 5 which makes it easy to add real-time features to your app

ActionCable is a new WebSockets server being released with Rails 5 which makes it easy to add real-time features to your app. This S

Daniel Rhodes 160 Mar 13, 2022
null 1 Jan 27, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 616 Jan 1, 2023
Real-Time image recognition for iOS with Vision(CoreML) and InceptionV3

Kesan-ML-iOS Real-Time image recognition for iOS with CoreML and InceptionV3  Test Flight Description Real-Time image recognition Integrating app wit

Ikmal Azman 3 Jun 26, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 615 Dec 27, 2022
An iOS and macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.

A simple, intuitive audio framework for iOS and OSX. Deprecated EZAudio has recently been deprecated in favor of AudioKit. However, since some people

Syed Haris Ali 4.9k Jan 2, 2023
An iOS application 📱 that extracts text real time using camera 📷 and play relevant video from the text

CHARUSAT-SceW It is an iOS application ?? that scans and extracts text real-time through camera ?? , if it is detected. It will play relevent video fr

Vatsal Patel 2 Nov 15, 2021