
Download the latest Xcode from Apple's developer downloads, install CocoaPods, and set up Firebase authentication, real-time database and storage, plus OneSignal for push notifications.
Set up a new Xcode project and build the login interface in the storyboard with email, password, and repeat password fields plus a register button, constraints, and keyboard handling.
pod 'Firebase/Database'
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'Firebase/Firestore'
pod 'ProgressHUD'
pod 'MBProgressHUD'
pod 'IQAudioRecorderController'
pod 'JSQMessagesViewController', ‘7.3.3’
pod 'IDMPhotoBrowser'
pod 'OneSignal'
#pod 'ImagePicker'
pod 'RNCryptor'
pod 'SinchRTC'
Create a Firebase project for the iOS chat app, download and add the Google service info plist to your Xcode project, then enable email and password sign-in.
Set up assets by creating a custom user class and a constants file, importing assets content. Initialize user data from dictionaries and prepare firebase login and registration.
Learn to implement login and register flows in an iOS chat app: validate email and password, enable login, require repeat password for registration, and show errors with a progress HUD.
Display a progress notification during login and authenticate with email and password using Firebase authentication. Save the authenticated user locally as the current user.
Implement the register user function for the iOS 12 chat app, validate password match, manage progress and keyboard, and guide users to complete their profile details after registration.
Prepare for the segue from the welcome view to the profile view, passing email and password to the finished registration controller. Clear text fields and dismiss the keyboard before transitioning.
Dismiss the profile view, clear all text fields (name, surname, country, city, phone), and dismiss the keyboard when tapping the cancel button to return to the welcome screen.
Enable the done button to validate required fields, show registration progress, register the user using firebase authentication, and save a user object to the database and locally with error handling.
Finish registration function updates the user dictionary, saves it locally and to Firestore, updates the current user with new values, handles errors, and proceeds to enter the app.
Set authentication-based security rules for Firestore, enabling read and write only for authenticated users, then save the first user and verify ID, avatar initials, name, city, and country.
Test the login function by entering a registered user to verify successful login, then set up the settings tab and storyboard to enable log out and multi-user testing.
Build a users table view controller in storyboard, add a header with a three-section segmented control, and customize cells with an avatar image and name label.
Learn to implement a custom table view cell for users, create the cell class, set a reuse identifier, wire avatar and full name, and load rounded avatars from Firebase.
Create a custom table view cell for user avatars by adding a top gesture recognizer, enabling interaction, and wiring a target-action to handle avatar taps in a chat app.
Build a user table view controller for a chat app, create custom cells, connect the storyboard, manage Firebase users, and add a search bar and progress HUD for polished navigation.
Add the required search functions to the users table view controller and fix protocol conformance. Filter by first name using lowercase comparison, then reload the table to show live results.
Learn to set chat titles in an iOS 12 chat app, toggle the navigation bar title, and remove empty cells with a table footer view for a tidy chat list.
Dynamically filter users when searching by accessing the filtered set. Otherwise, fetch section titles and group all users for display.
Create a profile view using a table view controller with three static sections, featuring an avatar image, full name and phone number labels, and two action buttons arranged with constraints.
Develop the profile view in an iOS 12 chat app by wiring a table view controller, outlets, and actions to display user details and enable call, message, and block interactions.
Set up the profile view by wiring user data and avatar image, and use a custom delegate to navigate to the profile when the avatar is tapped.
Implement the block user function by updating the current user's blocked IDs in Firestore and locally, toggling block status with a button and updating the UI.
Reorganize the project into three main sections—chat, settings, and secondary views—add test prints for call and chat functions, and plan to start a chat when a user is tapped.
Select a user to start a private chat and create a recent chat entry, then generate a unique chat room id from user ids to ensure same chat room opens.
Create recent chat by defining a function that takes members, chat id, user name, and chat type (private or group). Check Firestore for duplicates and update or create per-user records.
Create a recent chats user interface by adding a table view with a custom cell featuring avatar, full name, last message, date, and unread badge using auto layout in storyboard.
Develop a custom recent chat table view cell by configuring avatar, name, last message, date labels and a counter, and implement a generate cell function using a recent chat dictionary.
Implement a custom cell that displays the last message, the chats counter, and a circular avatar, formats the last message date, and reveals the counter only when nonzero.
Display the first recent chat in the chats view by querying Firestore for recent messages, updating the table view, and presenting the last message for the chat.
Manage listening for new chats and load recent chats when the view appears, and stop listening when the view disappears, via a custom table header with a new group button.
Handle avatar taps in recent chats to show a private profile or a group chat view by fetching the related user data and presenting the appropriate profile interface.
Implement delete and mute actions for recent chats by adding buttons that appear when the user slides the cells and wiring table view delegate methods to handle dynamic mute state.
Implement a delete function for a recent chat by removing the item from the local array, deleting the corresponding Firestore document, and refreshing the table view to reflect the change.
Implement the restart chat function to refresh or recreate recent items for private and group chats, handling reasons, chatroom ids, and avatars in encrypted conversations.
Display the chat view controller, push and present it, then fix a nil unwrap error in the recent chat flow by validating the current user name versus full name.
Update the send button UI to switch between microphone and send icons based on text input, and adapt iPad popover behavior for App Store compatibility.
Define an outgoing messages class with a mutable dictionary and initializers for text, image, video, audio, and location messages, including sender id, name, date, status, and type for storage.
Implement a reusable outgoing message function that saves messages per user in firestore, assigns a unique message id, updates recent chats, and triggers push notifications.
Load the latest 11 messages from a chat room in Firestar, display quickly, then fetch the remaining messages in the background to keep the chat up to date.
Learn to implement remove bad messages to filter chat dictionaries by legit types (text, video, location, picture) and load, display, and listen for new chats.
Implement the insert initial load messages function to create incoming or outgoing messages from a dictionary, initialize messages with the collection view, and update read status using a helper isIncoming.
Implement JSQMessages data source to display chat messages from the messages array, auto-scroll to the bottom, and render incoming and outgoing bubbles with appropriate colors.
Learn to timestamp messages, display delivery and read status in a chat app, and show timestamps every three messages with an attributed bottom status label.
Debug the delivery status by inspecting the label and the messages array, not the dictionary. Adjust index checks to ensure the last message shows delivered.
Learn to load earlier messages in a chat app by deleting existing data, loading older messages, inserting them at the beginning, and refreshing the interface.
Create a custom chat header by building an avatar, profile button, and title and status labels with precise frames and alignment, then return the composed header view.
Set a custom title in the chat view by adding a left bar button and an info button, and show profile for one-on-one chats and group settings for group chats.
Create and populate a withUsers array by fetching user objects from Firestore using member IDs, then update the UI with online status and names for one-on-one chats.
Implement a single chat UI by loading the avatar, setting the title to the user's full name, and displaying online status, while dynamically handling group versus one-on-one chats.
Learn to build a camera class that presents the photo library via an image picker controller to select photos or videos for chat messages.
Learn to update info.plist with privacy usage descriptions for camera, photo library, media library, microphone, location when in use, and contacts to enable a WhatsApp-like iOS chat app.
Create an image upload flow to firebase storage for a chat app, saving pictures under picture messages/{userId}/{chatRoomId}/{dateString}, showing a progress HUD, and returning the image link via a completion handler.
Learn how to configure Firebase storage rules with authentication, create a storage reference, convert an image to JPEG data, upload with metadata, monitor progress, and obtain the download URL.
Upload the image, create a picture message with a link, sender id, and status, and save the outgoing picture message to the chatroom while playing a notification sound.
In iOS12 Chat App we are going to build 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 found on Udemy, I always teach full real world apps, when we finish with the course, you are going to have an app ready to post to AppStore. This iOS12 Chat Application can easily replace your native iOS chat app or WhatsApp. It will have all functions that WhatsApp provides.
What our app will include:
One on one chat
Group chat
Multimedia messages (Photo, Video, Audio, Location)
Fully end to end encryption
Push Notifications
Call function
CallKit
PushKit
Firebase users Authentication
Firebase storage
Firebase firestore (new real time database from firebase)
Phone number authentication
Custom uicollection views
Custom UITableviews
OneSignal
Sinch
Git Source control
the app covers many more topics its impossible to include all of them here
This iOS12 Chat App is NOT 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 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 support of the instructor
Your time is precious. We offer the best video courses with carefully crafted content, we are learning by coding!
Don't just take our word for it, check out our other courses and what other students have to say about our courses!
"This course is so far the best course I took in UDEMY. I really learned something. Totally worth the time. Won't regret it. The instructor was responsive too and the course is new and knowledgeable." J Nima
"A excellent Tutorial by david. Very good explanation" Tapan Kumar Raut
"There is nothing on Udemy like David's courses! I cannot recommend his courses enough. Best teacher out there, very responsive as well. " Kris
"I really do love the approach, the structure of the course gives you the ability to move forward smoothly, and efficiently gain as much knowledge as possible, the instructor really goes in-depth, it's incredibly comprehensive, not to forget that this is a real world project, and the advanced concepts gained here make me all confident that i'll be able to build my own apps in a very effective way. the course is well taught, and it really deserves the 5 stars, the instructor as well, he explains things in a very clear, clean way. Definitely enjoying the Course. and definitely Thumbs Up." Yen Loo
"This is one of the most complete and comprehensive iOS projects on Udemy! Everything works! No broken code! You learn Firebase, Onesignal and Backendless in one project. The instructor is always accessible, he goes for quality not quantity. I still have a way to go, but so far it has kept me completely engaged and focused! I wish there were more courses like this! I will definitely purchase another from David." antr8tr
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 it's a complete no-brainer, sign up today with ZERO risk and EVERYTHING to gain.
So what are you waiting for? Click the Buy Now button and join the best iOS 12 Chat App development course and lets get started.