Design+Code logo

Quick links

Suggested search

Firebase Analytics

Firebase Cloud Messaging works hand in hand with Firebase Analytics, so to make sure that FCM works correctly in production, make sure that you add the Firebase Analytics package in your project and enable it in the Firebase Console as well.

If the Firebase Analytics package is not in your Xcode project, navigate to ProjectName > Targets > iOS > General > Frameworks, Libraries, and Embedded Content.

Screen Shot 2021-03-12 at 11.35.41 AM

Click on the + sign and select FirebaseAnalytics > Add.

Screen Shot 2021-03-12 at 11.37.45 AM

However, at the time of writing (March 2021), there is a known issue with Firebase Analytics that might raise a validation error when archiving your project. The error displayed is Found an unexpected Mach-O header code: 0x72613c21. As a workaround to solve this issue, navigate to ProjectName (iOS) > Edit Scheme > Archive > Post-actions > + > New Run Script Action.

Screen Shot 2021-03-12 at 11.40.18 AM

Make sure to select your target. In our case, it'll be iOS.

Screen Shot 2021-03-12 at 11.43.01 AM

Then, add the following script. This script will remove all the unnecessary artifacts from the Firebase Analytics package that are causing the validation error. This won't affect your project nor the notifications feature.

Screen Shot 2021-03-12 at 11.43.51 AM

LOGFILE="${ARCHIVE_PATH}/static-frameworks.log"
echo "Removing static frameworks from ${WRAPPER_NAME} archive" > $LOGFILE
find "${ARCHIVE_PRODUCTS_PATH}/Applications/${WRAPPER_NAME}" -name '*.framework' -print0 | while IFS= read -r -d '' fm; do
    name=$(basename "${fm}" .framework)
    target="${fm}/${name}"
    echo "Checking: ${fm}" >> $LOGFILE
    if file "${target}" | grep -q "current ar archive"; then
        rm -rf "${fm}"
        echo "Removed static framework: ${fm}" >> $LOGFILE
    fi
done

Entitlements file

In your ProjectName.entitlements file, you'll need to change the APS environment key to production.

According to Apple's documentation, the APS Environment Entitlement is a key that is automatically generated by Xcode when you enable Push notifications in your project and have a development provisioning profile. By default, the APS environment value is set to development. When you release your app for beta testing or in the App Store, you'll need to set the APS environment to production.

Release and test in production

Finally, after everything is set up, simply release your application - either in the App Store or on Test Flight.

Then, navigate to the Notification composer in the Firebase console and create a new notification campaign. Fill in the Notification title and text in the first step.

Screen Shot 2021-03-12 at 11.12.57 AM

In the second step, select your application if you want to send the notification to all users, or click on Topic and select the topic you want to target.

Screen Shot 2021-03-12 at 11.13.36 AM If you want to send the notification at a certain time in the future, change it in the third step.

Screen Shot 2021-03-12 at 11.14.59 AM

In the fourth and last step, you can add additional options. For example, you can add a sound to your notification, an iOS badge (a little number in red will be displayed in the top right corner of your app's icon), and an expiration date. The expiration date is the time when the campaign will end, and FCM will stop trying to send notifications to users. The maximum duration life of a campaign is 4 weeks.

Screen Shot 2021-03-12 at 11.16.29 AM After you finished composing your first notification campaign, click on the Review button at the bottom and then Publish. If all is well, you and all the users who allowed notifications for your app should instantly receive the notification on their device.

Congratulations! You just finished the push notifications feature in your application! From now on, you can simply send notifications to your users using the FCM Notification Composer and users will automatically receive them! 🎉

Learn with videos and source files. Available to Pro subscribers only.

Purchase includes access to 50+ courses, 320+ premium tutorials, 300+ hours of videos, source files and certificates.

BACK TO

Push Notifications Part 2

READ NEXT

Network Connection

Templates and source code

Download source files

Download the videos and assets to refer and learn offline without interuption.

check

Design template

check

Source code for all sections

check

Video files, ePub and subtitles

Videos

Assets

ePub

Subtitles

1

Firebase Auth

How to install Firebase authentification to your Xcode project

8:18

2

Read from Firestore

Install Cloud Firestore in your application to fetch and read data from a collection

8:01

3

Write to Firestore

Save the data users input in your application in a Firestore collection

5:35

4

Join an Array of Strings

Turn your array into a serialized String

3:33

5

Data from JSON

Load data from a JSON file into your SwiftUI application

5:08

6

HTTP Request

Create an HTTP Get Request to fetch data from an API

6:31

7

WKWebView

Integrate an HTML page into your SwiftUI application using WKWebView and by converting Markdown into HTML

5:25

8

Code Highlighting in a WebView

Use Highlight.js to convert your code blocks into beautiful highlighted code in a WebView

5:11

9

Test for Production in the Simulator

Build your app on Release scheme to test for production

1:43

10

Debug Performance in a WebView

Enable Safari's WebInspector to debug the performance of a WebView in your application

1:57

11

Debug a Crash Log

Learn how to debug a crash log from App Store Connect in Xcode

2:22

12

Simulate a Bad Network

Test your SwiftUI application by simulating a bad network connection with Network Link Conditionner

2:11

13

Archive a Build in Xcode

Archive a build for beta testing or to release in the App Store

1:28

14

Apollo GraphQL Part I

Install Apollo GraphQL in your project to fetch data from an API

6:21

15

Apollo GraphQL Part 2

Make a network call to fetch your data and process it into your own data type

6:43

16

Apollo GraphQL Part 3

Display the data fetched with Apollo GraphQL in your View

5:08

17

Configuration Files in Xcode

Create configuration files and add variables depending on the environment - development or production

4:35

18

App Review

Request an app review from your user for the AppStore

5:43

19

ImagePicker

Create an ImagePicker to choose a photo from the library or take a photo from the camera

5:06

20

Compress a UIImage

Compress a UIImage by converting it to JPEG, reducing its size and quality

3:32

21

Firebase Storage

Upload, delete and list files in Firebase Storage

11:11

22

Search Feature

Implement a search feature to filter through your content in your SwiftUI application

9:13

23

Push Notifications Part 1

Set up Firebase Cloud Messaging as a provider server to send push notifications to your users

5:59

24

Push Notifications Part 2

Create an AppDelegate to ask permission to send push notifications using Apple Push Notifications service and Firebase Cloud Messaging

6:30

25

Push Notifications Part 3

Tie everything together and test your push notifications feature in production

6:13

26

Network Connection

Verify the network connection of your user to perform tasks depending on their network's reachability

6:49

27

Download Files Locally Part 1

Download videos and files locally so users can watch them offline

6:05

28

Download Files Locally Part 2

Learn how to use the DownloadManager class in your views for offline video viewing

6:02

29

Offline Data with Realm

Save your SwiftUI data into a Realm so users can access them offline

10:20

30

HTTP Request with Async Await

Create an HTTP get request function using async await

6:11

31

Xcode Cloud

Automate workflows with Xcode Cloud

9:23

32

SceneStorage and TabView

Use @SceneStorage with TabView for better user experience on iPad

3:52

33

Network Connection Observer

Observe the network connection state using NWPathMonitor

4:37

34

Apollo GraphQL Caching

Cache data for offline availability with Apollo GraphQL

9:42

35

Create a model from an API response

Learn how to create a SwiftUI model out of the response body of an API

5:37

36

Multiple type variables in Swift

Make your models conform to the same protocol to create multiple type variables

4:23

37

Parsing Data with SwiftyJSON

Make API calls and easily parse data with this JSON package

9:36

38

ShazamKit

Build a simple Shazam clone and perform music recognition

12:38

39

Firebase Remote Config

Deliver changes to your app on the fly remotely

9:05