
Set up your iOS development environment by installing Xcode 12 or newer. Configure CocoaPods and Firebase with a Google account to enable dependencies, backend services, and push notifications.
Create an Xcode project for a Swift chat app, configuring name, team, bundle identifier, interface, language, and deployment target. Prepare to install third-party libraries with CocoaPods in the next lecture.
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
pod 'Firebase/Storage'
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
pod 'FirebaseFirestoreSwift'
pod 'Gallery'
pod 'RealmSwift'
pod 'ProgressHUD'
pod 'SKPhotoBrowser'
pod 'MessageKit'
pod 'InputBarAccessoryView'
Connect the user interface to code by creating outlets and actions for labels, text fields, and buttons in the login and sign-up views using a storyboard.
Learn to update placeholder labels for email, password, and repeat password fields as users type, using text field edits and delegates, and conditionally reveal the sign-up button.
Toggle between login and sign-up views by updating titles, labels, and field visibility, and animate the transitions with a 0.5-second duration using asset images for login and register.
Learn to hide the keyboard with a background tap gesture recognizer, and implement data input checks for login, register, and forgot password, with clear error messages.
Create a custom user struct with id, username, email, push id, and avatar link, encoded to and decoded from firebase data, with current user helpers and equatable by id.
Build a Firebase user listener in Swift, create top-level collections with a helper, and use a singleton to register users, send verification emails, and save user data to user defaults.
Master the Firebase login flow with email and password, including email verification and error handling. Download the user object from Firebase and save a copy to local storage on login.
Learn how to resend verification email and reset passwords using Firebase user listener, including accessing current user, reloading data, and handling completion with errors.
Implement the login flow to reach the main app after authentication, initialize and present the main top bar via a storyboard identifier, fix identifier mismatches, and prepare for auto login.
Enable autologin by listening for Firebase authentication changes to detect the current user. Then switch the root view controller to the main view when a user is logged in.
Create and connect four tab views—chats, channels, users, and settings—using table view controllers, segues, and SF symbols in Xcode to build a complete chat app interface.
Embed the settings view in a navigation controller to enable a large title. Create a three-section static table view with avatars, labels, and disclosure indicators.
Create and customize a settings view using a table view controller, populate user info and version details, support dark mode, and prepare logout actions for a Swift chat app.
Learn to design an edit profile UI in the settings screen, including avatar image, name field, and optional profile picture, using a storyboard table view with segues and constraints.
Create an edit profile view in an iOS app by adding a table view controller, connecting avatar, username, and status outlets, and implementing a segue to the edit profile screen.
Save user name changes to Firebase and refresh the profile UI on each view appearance by configuring the text field and updating local and cloud data on return.
upload avatar images to Firebase storage, using a storage helper to handle upload, progress, and download URL, then save it locally and update the user profile with the avatar link.
Save files locally by locating the app’s documents directory, building file paths, and checking existence before writing image data for avatars, and using atomic writes to protect existing files.
Learn to download and cache avatar images locally, checking for existing files before download. Fetch from Firebase when missing and return the image via a completion handler.
Fetch the locally stored image, convert file contents to a UIImage, and if unavailable, download from Firebase, then save the image locally and return via completion.
Build a status feature by creating a status enum and loading statuses from user defaults, then display them in a status table view with a checkmark for the user.
Learn to show and persist user status in a chat app using user defaults for first run setup, map statuses, update a status table with checkmarks, and sync with Firebase.
Create a users tab with a custom table view cell showing avatar, name, and status in a navigation controller with a large title, loading avatars from firebase storage or placeholder.
Create dummy users for the iOS chat app by building a users data source, enabling search with a search controller, and uploading avatars to storage and saving to Firebase.
Download a user by id from Firebase, via a completion handler. Fetch all users with a limit, decode to user objects, and filter out the current user.
Download all Firebase users and display them in a table view, then set up a search controller to filter by username in real time, updating the list.
Implement a refresh controller in a table view controller to reload users on pull-down, preserve the large title after returning from a profile, and adjust header spacing.
Design and implement a profile view UI in a chat app using a table view controller with static cells, an avatar image, name and status labels, storyboard constraints, and Xcode.
Learn to display a user profile by passing a user object to a profile view, instantiate from storyboard, push via navigation, and populate name, status, and avatar.
Create a recent chat cell and struct to track who you chat with, the last message, timestamp, and unread count, tied to a chat room and Firebase server timestamp.
Implement a custom recent chat cell for an iOS app, wiring avatar, username, last message, and date outlets; configure with a recent chat and show unread counts.
Explore how to manage recent chats in a group chat by identifying which users lack recent conversations, generating new recent objects with sender and receiver details, and saving to Firebase.
Create a firebase recent listener singleton to encode and save recent chat objects to a document path based on two users, handling errors and updating recent items on chat start.
Create a chat room by passing the current user and the clicked user, yielding a chat room id. Then create and update recent entries for both users with member IDs.
Discover how to display recent chats in a table view, download them from Firebase, and add a search controller to filter by chat partner name.
Enable swipe-to-delete for recent chats, delete the selected item via firebase, refresh the affected row, and add a compose button to open all users and start a chat.
Reset the unread counter when entering a chat room by updating the recent item in Firebase. Create a clear unread counter function to reset on exit.
Build a chat room workflow in an iOS 14 Swift app by wiring the chat table to open a chat room, initializing with recipient details, and restart logic for recents.
Navigate from the profile view to a private chat room by initializing the chat view controller with the recipient's id and name and pushing it onto the navigation stack.
Learn to implement chat extensions by organizing five delegates into separate Swift files, conforming to MessageKit protocols, and wiring the data source, display, layout, and input bar handling.
Implement MKR sender and MKMessages message conforming to the sender type protocol for chat handling. Set default outgoing and incoming bubble colors and add initializers for message creation and display.
Implement a Realm manager with a shared instance to save any object conforming to the object protocol into the local Realm database, supporting create and update and handling errors.
Implement a function to save outgoing chat messages to Realm, iterating over member IDs and persisting each message to the database, then test by sending a sample message.
Save chat messages to Firebase in real time, organized by member ID and chatroom, encoding messages as JSON and handling errors, while a Firebase listener reads and syncs across devices.
Load chats from Realm by querying local messages for a specific chat room, filtering with a predicate on the chatroom id and sorting by date in ascending order.
Create an incoming message class to convert local messages into AMK messages for display in the chat collection view, handling text and multimedia messages and providing insert and process functions.
Load and display chat messages in a collection view, insert and reload on new messages, and auto-scroll to the latest message, while preparing for avatars, timestamps, and read status.
Learn to customize chat message cells in an iOS app by adding top date labels every third message, dynamic label heights, bottom status labels for the sender, and avatar initials.
Create the message bottom label for chat messages, show a timestamp for non-last messages and a read status for the last message using attributed text with a 10-point system font.
Learn to toggle the microphone and send buttons in the message input bar by dynamically updating the mic button status based on text presence, creating a responsive chat interface.
Create a last message date helper to drive real-time chats, default to now when no messages exist, and add one second to prevent duplicates in Firebase queries.
Implement loading earlier chat messages in an iOS Swift app by showing the last 12 messages, tracking display counts and indices, and enabling pull-down reload to fetch more.
Learn to build a Firebase typing listener that powers typing indicators in chat rooms by creating a typing collection, tracking each user's typing flag, and listening for changes.
Create and manage a typing indicator in a chat app by updating a typing counter, saving to Firebase, and auto-stopping after 1.5 seconds with a typing observer.
Demonstrates how to show and hide a typing indicator by listening to typing events between users. Removes listeners when leaving the chat room and resets the recent counter to zero.
Update the message status to read and record the read date in Firebase for each member by looping through member IDs and updating the appropriate message document.
Update read status in a chat app by inserting messages, marking messages as read for non-current users, and syncing updates in real time via Firebase listeners.
Listen for read status changes in Firebase messages by attaching a snapshot listener to chat data, convert updates to local messages, and update the chat in real time.
Identify the updated EMK message in the local messages array, update its read status and state, save the change with the real manager, and refresh the UI.
Fix the infinite loop between Firebase and the local database by updating only incoming messages, not those already read, and refining listeners to avoid redundant writes.
Add an action sheet to the chat app to send multimedia, wiring the attach button to present camera, library, and location options with icons, and hide the keyboard.
Learn to send a picture message by uploading the photo to storage, retrieving its link, composing a photo message with a unique chatroom-based name, and saving locally.
Learn to implement sending video messages in a chat app by converting gallery videos to data, creating a thumbnail from the first frame, and composing a video message.
Receive and display video messages by adding a video message type, downloading the thumbnail and video, and presenting a playable video item with a play button.
Learn to implement a singleton location manager in a Swift chat app by requesting permission, configuring CLLocationManager, and streaming the user's current coordinates for sending location messages.
Learn to send a location message by using a shared location manager, requesting when-in-use authorization, obtaining current coordinates, and delivering latitude and longitude in the chat.
Tap a location message to push a full screen map view, initialize a map annotation with coordinates, and add a pin to the map to display the location.
Configure long-press gesture recognizer on the mic button to record audio messages like WhatsApp. Begin on began, stop on release, save a unique file name, check file exists, and send.
Create an audio recorder class in Swift, manage microphone permission, configure an AVAudioSession, and implement start, stop, and setup functions to save recordings to the documents directory.
Record an audio message in the chat by starting the recorder, saving to a local file, and sending with a duration calculated from the start time.
Implement sending audio messages by capturing duration, uploading the audio file to Firebase, obtaining its link, and saving an outgoing audio message with type talk audio and duration.
Implement an audio message play feature in a chat app using a basic audio controller to manage play, pause, and stop across multiple messages. Stops playback when leaving the chat.
Explore the basic audio controller class that manages the audio player, progress view, duration label, and cell configuration, with play, pause, stop, resume, and a timer-driven progress bar.
Build and navigate the channels user interface in an iOS chat app, where admins post and subscribers read, view subscribed and all channels, manage members, and create new channels.
Wire outlets and actions for the segmented control and configure the channel view to display one cell. Set a large navigation title and preview the Channel model next lecture.
Build a Firebase-backed channel model for Swift chat apps, including ID, name, admin, member IDs, avatar, and timestamps, plus a channel cell showing name, about, members, and last message time.
Dequeue a reusable channel cell by identifier, configure it with a channel, and drive the channels list using two arrays (subscribed and all) controlled by a segmented control.
Build my channels and add channel interfaces in a swift storyboard using table view controllers with a plus button and static cells for avatar, channel name, and about channel.
Upload the selected image as the channel avatar to Firebase storage, update the avatar link, then validate the name and save the channel with admin and about details.
Download user channels from Firebase where admin id equals current user id, listen for changes, map to channel objects, and sort by member count for display.
Learn to edit channel details by reusing an add/edit view, implement segues from the channel list to the edit screen, pass an optional channel for editing, and handle optionals safely.
Enters editing mode by populating name, about, and avatar from the selected channel, updates the title to editing channel, and assigns the channel ID for in-place updates.
Download subscribed and all channels from Firebase and display them in a table view. Filter out channels the user is a member of and remove listeners when not needed.
Download channels from firebase and subscribe channels, update the table view in the background, and auto reload when the user switches between all channels and subscribed channels.
Build a channel detail view that displays name, member count, about text, and avatar from a channel object, with image loading and navigation to chat.
Set up a channel detail delegate to notify on follow, update channel members in Firebase, save changes, and refresh all channels and subscribed channels when the user follows a channel.
Learn how to implement unsubscribe and delete channel functionality in an iOS chat app using Swift, handling admin versus member permissions, swipe-to-delete actions, and syncing with Firebase.
Refactor channel chats by saving all messages in one place, adding a channel parameter to sending, and fixing the date label and read-status logic for messages, with push notification setup.
Set up push notifications by creating Apple certificates and signing requests with a paid Apple developer account, then configure Firebase Cloud Messaging for iOS delivery.
Register for remote notifications, request authorization, and handle the Firebase messaging token. Update the user's push ID in Firebase to enable push notifications.
Reset the app icon badge to zero by implementing a reset badge function that sets the UIapplication.shared.application.iconBadgeNumber, called after login, on disconnect, and when the app enters background or foreground.
In iOS 14 & Swift Chat Application Like Whatsapp Viber Telegram, we are going to build a real-world iOS application. And when I say real world, I mean you can use this App every day, communicate with friends and family!
Unlike any other courses on Udemy, I always teach full real-world apps, when we finish with the course, we are going to have an app ready to post to AppStore. This iOS14 Chat Application can easily replace your native iOS chat app or WhatsApp.
What our app will include:
· One on one chat
· Channels
· Multimedia messages (Photo, Video, Audio, Location)
· Push Notifications
· Firebase users Authentication
· Firebase storage
· Firebase Firestore
· Firebase Cloud Messaging
· Custom UUCollection views
· Custom UITableviews
· Git Source control
· the app covers many more topics its, impossible to include all of them here
This iOS 14 & Swift Chat Application Like Whatsapp Viber Telegram is NOT a beginner-level course. You need to know your way around the xCode, be familiar with it, you have to have basic knowledge in Swift and application building. We are going to start from scratch and build the application together. All assets will be provided by me. I will type and explain every line of code. the course is around 35 hours long. And by the time we finish, you will learn a lot of new things even if you are an experienced, iOS developer.
The curse will teach you how to write clean code, structure your app development, so even if you get back to your code in few years, you can read and understand it clearly.
We are also proud to say that we have one of the best Support available on Udemy! Our Q/A Section is constantly monitored and all questions are answered within few hours, Sometimes we even chat with students in real-time to help them with the issues they may face during the study.
Don’t waste your time on low-quality courses where you don't even get the support of the instructor
Don't just take our word for it, check out our other courses and what other students have to say about our courses!
We are so confident that you'll love this course that we're offering a FULL money-back guarantee for 30 days, No Questions Asked!
So what are you waiting for? Click the Buy Now button and join the best iOS 14 & Swift Chat Application Like Whatsapp, Viber, and Telegram development course and let's get started.