
Learn the basics of Xcode, Apple's iOS development environment, by creating a new single view app, exploring templates, and designing UI with Interface Builder and storyboards.
Create a welcome scene with a header label and sign-in options using storyboard. Add Facebook, Google, and email sign-up UI, plus a terms of use label, then run the app.
Customize the welcome view by wiring outlets for the header label and controls, then use attributed strings and auto layout to render a two-line, styled header.
Design the welcome view by customizing buttons with constraints—40 points below the header, 20 points side margins, and height 50, plus color changes.
Customize the welcome view by creating and styling the terms of service label using attributed strings, bold and regular text, font size, color, and centered alignment.
Design the welcome view buttons via code, adding Facebook and Google icons, setting titles and states, applying blue background and corner radius, and aligning icons with image insets.
Design a minimal registration scene with a sign up view controller, profile image, header label, email/username/password fields, and auto layout constraints for a responsive layout.
Polish the sign up UI by connecting outlets, naming properties in lower camel case, and implementing a setup UI method to customize all UI elements.
Customize the sign up view by implementing UI extensions to style avatar, text fields, placeholders, and buttons, reusing welcome screen styles and enabling secure input and attributed button titles.
Design the sign in view for the real-time chat app by duplicating the sign up scene, removing extras, and wiring it to a dedicated sign in view controller.
Design the forgot password screen with an email field and reset button, style it like sign in or sign up views, and connect UI elements via storyboard and code.
Use a navigation controller to manage hierarchical screens and segues among welcome, sign up, sign in, and forgot password, with show action and push/pop navigation via the close button.
Install Firebase into your iOS app using CocoaPods, create and configure a Firebase project, and initialize Firebase in the app delegate. Explore real time database, authentication, storage, and other services.
Create and save new users with firebase authentication, then store their data in a firebase database under a unique user id, using updateChildValues to manage the users node.
Add a tap gesture to the avatar image view and present an image picker to select a photo from the library, then update the avatar with the chosen image.
Upload a selected photo to Firebase storage as JPEG data, store it under the user profile, retrieve the download URL, and save it to the database to link to user.
Learn best coding practices by factoring code into a user API, applying input validation and keyboard dismissal, and showing authentication progress with Progress HUD via CocoaPods for Firebase sign up.
Wire the sign in view to the sign in view controller, validate email and password, and handle authentication with progress HUD, then switch to the tab bar view on success.
Implement the forgot password flow by validating the email, triggering the password reset API, and showing success or error alerts, then navigate back to sign-in.
Design and test a three-tab interface using a tab bar view controller in a storyboard, featuring messages, search, and profile screens with customized icons.
Enable auto sign-in and log out by configuring the initial view controller, using a tab bar after authentication, and implementing a logout action that returns to the welcome screen.
Design the people view to discover users by listing data from the database in a table view using a custom cell with avatar, username, status, and chat icon.
Observe child added on the users reference to load new user data, convert each snapshot dictionary into a user object, and populate the table view with emails, usernames, and avatars.
Display user profile photos by downloading images from URLs using the SDWebImage library, wrapping the logic in a helper UIImageView method, and presenting rounded, 60x60 avatars in table view cells.
Refactor code to move Firebase integration into the API class and load users via the observed method. Break down the massive view controller and use type alias to simplify closures.
Add a search bar with the UI search controller and display results in the same view. Filter users by name using the update search results protocol and reload the table.
Design a chat UI with a storyboard-driven table view and a bottom container for the chat box and send button, then customize the navigation bar with a profile avatar.
Design a two-line navigation title with partner name and online status using attributed strings, then build a chat input view with attachment and mic buttons and a multi-line text view.
Learn how to customize chat input UI by tinting icons, wiring outlets and actions in Interface Builder, and adding a placeholder text view that enables sending messages to Firebase.
Send text messages to firebase by organizing under root messages with the current user id and partner id, storing each message under a unique auto id.
Learn to push photo and video media to firebase storage using an image picker, then store thumbnail and message metadata under a structured messages/photo path in the database.
Learn to send video messages by storing video data and thumbnails, generating thumbnails with AVAsset, and updating the Firebase database with the video URL.
Design a chat bubbles cell for a realtime chat app, using a single table view cell to display text, photos, date, with left/right alignment by sender and a play button.
Learn to display and style chat messages by customizing the message table view cell, including bubble styling, profile images, and dynamic sizing for text and photo messages.
Download and play videos from stored URLs by initializing an AVPlayer and an AVPlayerLayer. Observe playback state and show a loading indicator, while hiding the play button during streaming.
Factor your code by moving chat controller logic into extensions, remove the separator line in the setup table view, and organize code into clear, reusable blocks for easier future modifications.
Build the inbox structure in Firebase by updating each user's inbox with the latest text or media, and mirror updates for both users when sending messages.
Model inbox data retrieved from the database by encapsulating dictionaries in an abstract class and implementing initialize and transform methods, then create inbox instances from dictionaries.
Customize the inbox navigation bar by adding the logged-in user's avatar on the left, setting a custom back button image and purple tint, and adjusting the back title.
Design a profile scene by building a static table view with a header profile image and fixed rows for username, email, privacy policy, terms, wallpaper, and logout.
Update user information by tapping the profile image to pick a new photo, save the profile image to Firebase storage, and update name, email, and status in real time.
Integrate push notifications with Firebase Cloud Messaging by requesting permission, obtaining a device token, and handling remote notifications via APNs in the app delegate.
Configure apple push notification service and firebase cloud messaging for the J chat app. Create an app id, generate an apns key, enable push, and test with a device token.
Deliver user-id topic push notifications via Firebase Cloud Messaging; subscribe each user to their own topic, use the server key in the authorization header, and unsubscribe on logout.
Design a circular online status indicator for each user and wire it to the user API to update the is online status in firebase, reflecting login, logout, and app activity.
Detect and display users' online status in the chat scene by observing online and latest time data, updating the navigation bar label to show active status or the latest time.
Implement a real-time typing indicator in a Firebase-powered chat app by updating the typing field and showing a navigation bar indicator when the partner types.
Monitor users' online status in the inbox and people scenes and implement real-time profile updates using Firebase observers, updating the online indicator color and reloading data across views.
Implement real-time updates in the people scene by adding an observer for user changes (name, email, avatar) and reloading the table view when updates occur.
Implement real-time inbox updates by observing Firebase changes, updating the latest message and date, and refreshing the inbox table view as new messages arrive.
Implement real-time avatar updates within a full realtime chat and Tinder app, ensuring avatars refresh instantly as users interact and customize their profiles.
Adjust the chat input container upward by setting the bottom constraint to the minus keyboard height when the keyboard shows, and reset to zero after it hides via Notification Center.
This is the most comprehensive iOS Chat/Dating Application on the internet in which you will learn to:
A comprehensive authentication system:
Sign In/Sign Up with emails.
Sign In/Sign Up with Facebook and Google.
Reset Password for existing users.
Efficiently model super complex Realtime Chat and Dating architecture with:
User profiles.
Inbox.
Message (Text, Photo and Video)
Search.
Push Notification.
Handing address location on MapKit
Real-time show User's location/information.
Details of an User with the route on the MapKit.
Allow users search username.
Send/Receive Messages & Push Notifications.
Realtime User's location queries.
And so much more!
This course is all about communication. We are going to create an awesome Chat/Dating App that will include features like push notifications., real time updates, find and chat with the people nearby. This App is called JChat.
After outlining the challenges we are facing when creating a messaging application we are going to compile all the resources we are going to need to create our JChat App. Using Firebase as a backend service, we will then start developing a possibility for users to login and register with Email, Google and Facebook for the JChat.
The core of our JChat App is of course a great user interface for exchanging messages. After setting up a iMessage-like UI we will focus our efforts on efficiently loading and sending messages.
As important as a way to register to a messaging service is an intelligent way to find users that we want to talk to. So we will also implement a great search feature.
If you want to chat with the people nearby, you can give your location and the app will show people around you. You can also link your Facebook account with the app. But there is also an option to make an account with the email id.
You'll learn how to create user profile, manage swipes and matches, like Tinder. Users can like and dislike profiles of other users to find a match, after finding a match user can engage start seamless conversations and exchange unlimited images and messages.
Furthermore, you'll build a push notification feature in which users will get notified instantly when their profiles were liked by others.
What are you waiting for? Enroll in this course for step-by-step instructions to guide you through building your own professional app in no time!