
Learn to implement transactional emails in an app using SendGrid, triggering real time messages after user actions like signup, feedback, or ticket requests, with email templates and QR code support.
Please download the image assets to follow along with the lessons.
Set up a UI in Xcode with a tab bar and navigation for events and feedback; install CocoaPods including SendGrid SDK, SDWebImage, and a messaging library, then open the workspace.
Set up a feedback view controller in a Swift 5 app using UIKit, building a vertical stack with labels and a text view, and apply constraints.
Add large titles and a bar button item to the navigation bar, then connect IB outlets and the submit action in the storyboard for a Swift 5 UI workflow.
Implement a Swift picker view to select a feedback category using an enum with raw values, binding the choice to a category text view via its delegate and data source.
Populate first category item on the initial tap and track whether a selection exists. Add a toolbar with a done button to dismiss the picker and update the category text.
Refactor the toolbar by passing a frame during initialization, converting it to a stateful class instance, and cleaning up console warnings from tapping the category text view.
Disable the submit button on load and enable it only when category and text view input are present. Track changes with textViewDidChange and prepare for a reactive approach with combi.
Learn to observe form inputs with the Combine framework in Swift, binding category and commands using publishers to enable the submit button only when the form is complete.
Handle the submit button event by sending a feedback form through the email manager, then show a toast on success or error while modeling the form with category and comments.
Explore general refactoring by adjusting the text view delegate to control first responders, adding a tap gesture to dismiss the keyboard, and preventing memory leaks from strong references.
Optimize the feedback flow by dismissing the keyboard on submit, displaying the MBProgressHUD loading animation during the async callback, and clearing the category and comments fields after submission.
Sign up for a free SendGrid account and generate a new API key, then store it securely as an environment variable in the project settings for safe access.
Learn to implement an in-app email manager using SendGrid API in Swift 5, retrieve keys from the environment, craft a test email, and handle errors and sender verification.
Send in-app feedback emails by wiring the feedback view controller to SendGrid via Swift 5, composing a 'feedback received' subject and including category, commands, and comments.
Build an events table view in the iOS app, connect the navigation controller, set the table view cell identifier and height, and implement delegate methods to populate three rows.
Define an event model with id, title, details, and image URL; implement a custom table view cell that loads and displays event images as backgrounds from a predefined events collection.
Add a right-aligned button to a table view cell by embedding a container view and applying constraints. Use a stack view to manage labels and button, addressing clipping warnings.
Update the event label by wiring title and details outlets, fix constraints, and enable dynamic font scaling; add a gradient overlay to the event image for better contrast.
Handle the join button click by presenting a modal view and communicate the event from child to parent using a closure (or delegate pattern), then show a confirmation.
Set up a ticket confirmation view controller and dynamic UI to display the event. Pass the selected event to the confirmation screen via a segue, using prepare(for:sender:) and another approach.
Modify the in-app modal: replace the close button with an icon, adjust padding and constraints, and add a tinted background to separate the modal from the underlying screen.
Implement a tap gesture on the modal background to dismiss the modal when tapping outside, refine with a gesture recognizer delegate to exclude taps inside the modal, and verify behavior.
Define the stepper behavior to increment and decrement a ticket count with a minimum of one. Use Combine to publish and observe value changes and update the label.
Transform a request button into a loading button by showing a loading indicator, adjusting the button appearance, and preventing repeated taps to signal a loading state.
Implement protocol and delegate communication from the confirmation child to the parent, handle the happy path by dismissing the modal and showing a top success toast confirming ticket delivery.
Learn how to implement a ticket confirmation flow by sending a confirmation via the email manager, using a dispatch queue delay to showcase loading states.
Implement template emails in a Swift 5 app using the SendGrid API, creating dynamic templates, configuring personalization, and handling main-thread updates to deliver in-app transactional emails.
Learn to personalize emails with SendGrid API and Swift 5 by passing a data dictionary into template personalization, updating subject, preheader, and dynamic fields like event name and details.
Add image data and dynamic values to an in-app transactional email template using SendGrid with Swift 5, including ticket counts, image URLs, and customized banner text.
Learn to add a dynamic QR code to an in-app transactional email using the SendGrid API with Swift 5, embedding user data and images in a customizable template.
Refactor the email manager to centralize the session with a private computed property and API key authentication, enabling ticket confirmations and feedback emails to reuse the same session.
Perform final touches and clean up for the in-app SendGrid Swift 5 UI by refining messages, refactoring strings, reviewing feedback and confirmation flows, and polishing layout.
Welcome to the Send transactional emails in-app with SendGrid API & Swift 5 course.
In this course, we will build an Events app and learn to:
Send emails from your iOS app without building a server
Obtain an API key with SendGrid
Send templated and non-templated emails from our app alone
Add dynamic QR code into our email
Create a customisable email template design
This course is designed for iOS developers with at least 1 year experience and is not a beginners' course.
These are some comments from some of my students:
Excellent Content, I appreciate the different styles of onboarding screens and all the great explanation! - Carey M
The course is very concise but informative . I really like the project based approach that this course takes. It cuts straight to the chases and show you how these abstract concepts are put into real life problems . Highly recommended - AN Dinh
Really easy to follow and great for beginners. Really enjoyed the course, thanks Kelvin! - Atiqah A.K
Perfect course to help me get started on ios programming! - Tan Kel Vin
The instructor is knowledgeable and clear with his instructions. The course is great and informative for those who are planning to build a skeleton they can build on their own app projects Instructor is also helpful. - Raphael Lim