An IoT Side Project: Chima-open-door

My company’s Internet of Things (IoT) side project began when we couldn’t reset the door lock that we inherited from a previous tenant. It was one of those minor details we learned about after moving in to our new last-minute office.

Normally, people just pay for a new one. But our team was too cheap to replace the lock and no one ever wanted to get the door bell. Plus, we’re engineers and we wanted to fiddle with some hardware.

Our goal was to open the door with a phone or wearable technology. We had several options for how to approach the problem. In theory, we could use an app, an integration into another platform, or anything that could send a signal to trigger the door lock.

So far in our door lock experiment, we’ve developed solutions for a Slack integration, native iOS and Android apps, the Apple Watch, and Pebble. I’ll focus on the architecture of the mobile apps. I admit the final product is a bit over-engineered, but we just love it!
Continue reading “An IoT Side Project: Chima-open-door”

Manage your AppStore Preview Images in one place – make your life easier with ShotBot

You’ve been working hard preparing for your launch to AppStore. The final step is getting it submitted to iTunesConnect.

GIFCAM-iTunesConnet

You have to fill in the app details, upload the app icon, localized descriptions and preview imagesupload them one-by-one going through your list of localizations for each supported device in English; one-by-one for each device in French; one-by-one for each device in German, etc, etc.
.
.
.
OK, 13 languages.

You have to upload screenshots one-by-one for each device, for each locale. Oh that’s O(n²)

Let’s say you have built an awesome app for iPhone & iPad and now it’s ready for launch.

Question, how many preview images exactly do you have to add?

The answer is simple. For each locale, there are 3.5-inch, 4-inch, 4.7-inch, 5.5-inch and iPad screenshots (and don’t forget the upcoming iPad Pro). There are 5 images in each set, that gives you 5 x 5 = 25 pcs for each locale.

Needless to say, you will have to organize 25 x 13 = 325 preview images to iTunesConnect. Sounds scary right?

Continue reading “Manage your AppStore Preview Images in one place – make your life easier with ShotBot”

Spentable (Expense Tracker): How we built our first app for watchOS 2

Spentable: How we built our first app for watchOS 2

In WWDC2015, Apple announced iOS 9 for iPhone and watchOS 2 for iWatch. It has been a huge revamp for watchOS. Not until now, a watch app finally runs natively on the watch.

That means the code is now executing on your watch instead of the phone. By reducing multiple times of data transfer between devices, this is going to make the app loads a lot quicker and responds in a shorter period of waiting time.

Continue reading “Spentable (Expense Tracker): How we built our first app for watchOS 2”

VIPER – iOS App Architecture Beyond MVC (Mega-ViewController)

The MVC Architecture is generally used in developing iOS applications.

However the “ViewController” approach widely used is the most evil part that messes up Views and Controllers: Developer writes both view animation and business logic in the UIViewController, hence introducing a MEGA-ViewController.

In this passage, we will share our experience on how VIPER saves our lives from this monster in one of our projects.

VIPER is not a framework  but an approach to iOS application architecture, which stands for:

  • View
  • Interactor
  • Presenter
  • Entity
  • Routing(Wireframe)

The “MVC” monster

mega-viewcontroller monsterTypical Model objects are simple, they are just NSManagedObject.

View and Controller are wrapped in a single UIViewController class. The UIViewController class constraints the fundamental view management of the iOS app. As the name convention suggests,  view controllers often handle both business logics and logics for responding to user interactions.

Continue reading “VIPER – iOS App Architecture Beyond MVC (Mega-ViewController)”

Continuously Delivering iOS Beta Builds Automated with Travis CI

Over the years, we’ve been building loads of nicely-crafted iOS applications for our clients.

To keep everyone work closely, we send daily builds to our QA Team, beta users, clients, other team members. However, building an iOS is still painful for Project Manager — It involves compiling, uploading the app to TestFlight or HockeyApp,
setting up  Crittercism for collecting crash reports (Those who have experience, should know that you have to upload dSym files for symbolic debug messages), notify everyone on Slack, etc.

Much better if we can automate all these with each Pull Request.

Continue reading “Continuously Delivering iOS Beta Builds Automated with Travis CI”