It could use several strategies to send Push Notifications to Mobile and Web clients. These strategies combine different integrations with FCM and APNS depending on the ecosystem of operating systems (iOS, Android) that need to be served. I summarize these patterns as follows:

  • HTTPS Triggers with FCM and APNS Approach.
  • HTTPS Triggers with Independent FCM and APNS Approach.
  • HTTPS Triggers with APNS Approach.
  • HTTPS Triggers with FCM Approach.
  • Event-Driven Approach.

Each of these strategies and their related components is described in general below.

I recommend the reader check my Push Notifications Handbook for more information.

HTTPS Triggers with FCM and APNS Approach

This pattern uses the FCM

Rx Wrappers in Mobile

This time I would like to share a couple of classes that I usually use to integrate Firebase authentication operations. They are built in RxSwift and RxJava. It is an alternative when you do not want to use third-party libraries.

In iOS:

How to use it

In Android:

How to use it

That is also an example of how we can use wrappers for integrations, not only with Firebase. You could also design wrappers to integrate microservices on GCP or AWS. I recommend you this other article Web and Mobile Backend Services Patterns.

Retry Pattern

This article will describe a simple, easy-to-understand pattern that could be quite useful to add to the designs a sufficient capacity of resilience against error scenarios, transient failures, scenarios of unavailability of service, even unavailable resources.

Although I will describe this design pattern using the application approach in mobile clients, I should note that it is a reasonably versatile pattern that can apply to any component that requires communication with other components or services. For example, in Serverless Architectures or Microservices Architectures and specifically in the integration of Cloud Services, we can find multiple uses and exploits of this pattern…

This time, the turn is for the Circuit breaker pattern. That is a well-known pattern in distributed microservices architectures.

Before seeing the implementation detail, let’s see the context of this pattern.


“Circuit breakers can be used to stop the flow of messages to an actor when something unusual happens.” It is an appropriate description given by Hugh McKee in the report Designing Reactive Systems: The Role of Actors in Distributed Architecture. Martin Fowler also describes this pattern in one of his articles.

In its essence, the Circuit breaker is a finite state machine whose default state is generally closed. According…

In mobile applications, the design of functionality that involves the execution of multiple tasks could generate the following questions:

  • Will the execution of the task take a considerable time, 30 seconds, or more?
  • Is it required to notify the UI of the result of the task?
  • Are there dependencies with other tasks?
  • Are the results of the tasks an input for other jobs?
  • Should the task be executed with the application in the foreground, background, or both?
  • What happens to the execution of the task if the application is closed?
  • What should happen to the task execution if the device…

Suppose for a moment that we need to design an application with support for Mobile and Web clients. We also need the solution to be scalable, elastic according to the demand for resources, high service availability, resilience to failures, and the ability to recover its services in specific tolerance times. Besides, it is so flexible to integrate extra services.

We can turn to cloud services to design solutions to meet these types of requirements. We have large cloud service providers such as Google or Amazon. This article is dedicated to the services provided by Google through Google Cloud Platform.


Yair Carreno

Software engineer with a technical blog about #iOS, #Android, #Angular. Author of “The Clean Way to Use Rx”:

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store