Sign in

Senior Mobile Engineer

When we want to publish application to users around on the world make sure the application is localized. Otherwise, only some users can use our application. Normally, we can easily localize it by defining the languages with key-value that we want to support in the string files then get value by key to display on UI.

But how’s about with push notification? Server just send information to OS system and how we can handle localization for them.

There are several approaches in this case:

Approach 1: Server knows what language application is using. So it needs to have API to…


First of all, we will look into below example:

How is different? Yup, nothing! So why do both of them exist?

In the following, we will look at their similarities and differences and we will know why they both exist.

As above example, they can use for method type. But what will happen if another class inherit from them:


Before going to the heart of this article, let me talk about unit testing. Why is unit testing? Because we need unit testing so we can know how much code is covered. That is simple reason!

Within the scope of this article, I will not go into deeply unit testing instead I will only briefly outline the importance of unit tests.

There are some reasons why unit testing is important:

  1. It helps us to identify bugs early while developing features. That mean reduce time testing for QC and fix bugs time.
  2. When we can write full unit tests that mean…

In previous tutorial I introduced to you how to release an iOS library to CocoaPod. So today I will guide you how to integrate with codecov and travis CI to make sure quality of the library when you want to update library any time. Beside that you also increase the reliability for users when they take a look your public document on github. That’s great!

The following are the main content you will get through this tutorial:

  • Integrate with codecov
  • Integrate with Travis CI
  • Display results on github

Okay, let’s go!

Integrate with codecov

Codecov help you improve your code…


If you are a developer iOS, I firmly believe that you are no stranger to CocoaPods and you can even use it every single day. But at some point, you were wondering how to release a great CocoaPod library for others who can use it, or you just want to reuse the feature for your future projects without you having to copy and paste the old code.

In case you want to learn more about CocoaPod you can find out more at the homepage

So in this tutorial, I only guide you how to release a CocoaPod library for iOS…


We installed swiftlint and code coverage in part 2. Now we will go ahead with Fastlane match. To avoid wasting time when work in a team, manage signing and provision is very necessary.

You can imagine the following workflow to share the signing and provision in the team:

  1. Export certificate in Keychain into .p12 file
  2. Download provision in Apple Developer
  3. Give out this files for each member in the team.

If a certificate or provision is deleted, expired, a new member join with team or a new device added, you must start all above steps again.

Let’s make it more…


In previous tutorial, we installed Runner, Fastlane tool to run CI/CD on Gitlab. We are also configuring for swiftlint to check code style convention and a lot errors happened.

Now, we continue with this step to fix all errors in code.

We need to create .swiftlint.yml in the root directory of the project to do that. This file tell with swiftlint library what we need to check in our project.

$ touch .swiftlint.yml

Then, open this file with vim, it is the text editor tool:

$ vim .swiftlint.yml

And paste content to your .swiftlint.yml file:

disabled_rules: # rule identifiers to…

In this tutorial, I will introduce to you how to setup CI/CD on GitLab for iOS project. Through this article, you will approach some concepts as what is CI? What is CD? Why do we use CI/CD in the iOS project?

What is CI?

Continuous integration (CI) is the software engineering practice of frequently integrating isolated changes to a larger code base and testing them immediately.

What is CD?

Continuous Delivery (CD) is the ability to build software that can be released to production at any time.

Why should you use CI/CD in your iOS Projects

You can consider the…

Phan Quang Hoàng

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