Specification and high level design of WoWRealmStatus for iOS

Project Goal

For the first release of WoWRealmStatus, the goal will be to get realm status change notifications on the device. Anything that doesn’t support that is unnecessary and will be shelved until we get the app in the store and in peoples hands.

Data sources

Blizzard provides realm status in a couple different ways. There is the status page that displays HTML in a way that is useful for humans to consume. There is also a URL that has the same data in JSON, which is easier for a computer to parse.

The upstream status servers are divided into five regions at this time. Each region contains it’s own set of realms and has it’s own status page. We could focus on one region to simplify things or we can support all five at the cost of additional complexity to our project.

App specification

The app for this project will be very simple. * It needs to generate the unique identification number and register it with the Apple Push Network. * It needs some way to manage the list of watched realms. * We’d like it to show the current status of realms.

The way I’m seeing it, the app will be a tabbed interface with three tabs. One tab will be an abbreviated list of watched realms, “just what I care about” for quick viewing. Another will be a list of all the realms so you can add realms to watch. The final will be a “settings” tab that will include a region selector, basic “about” information and a link to the web site.

I like the idea of using green up arrows and red down arrows like Blizzard does in their human readable status page. Red and green are commonly used with status lights. The arrows would signify if a realm is up or down and make it readable by colorblind people.

For watched/unwatched, I’m thinking of a drawn eye. Maybe a muted gray one for unwatched and a glowing gold one for watched.

The “all realm” screen will be a table with each row being a realm. When you tap the realm, the ‘watch’ status toggles and the eye updates.

The “watched realms” screen will have the same cells, but only list the watched realms. I have to admit that there was an interface change to this screen after some user testing. The original design had the realm disappear when tapped. Unwatched realms couldn’t show up on the ‘watched’ page. Accidental taps were confusing as the realm just disappeared. So we’re going to simply turn the realm’s eye to the gray icon and allow it to be re-selected without going back to the all realms page. If you change tabs and go back to the watched realm tab, it will only show the currently watched realms.

To keep synchronization between the app and server simple, every change will send the entire list of watched realms over. The app won’t be used for a solid 5 minutes at a time, so we’ll only pull the server status list when the app is opened or when the region changes. The list of watched realms will be fetched from the server when the region changes or when the app is loaded. Only the device ID and current region will be saved on the device.

Server specification

The server at this stage has three distinct responsibilities. It has to poll Blizzard’s realm status regularly, noting any changes. It has to to receive the device addresses and which regions and realms the device wants notifications about. It has to emit those notifications to the Apple Push Network when changes in realm status are detected.

This part of the puzzle gives us a lot of freedom. We can write it in any language we want, using any framework we want. We can change, update, or even rewrite it without updating the app itself as long as the communication protocol stays the same. With that, I’ll leave an in depth discussion about the plan for this piece for another time. All that’s important right now is that the network protocol is set up, we can even put in a dummy server for testing.


Last modified on April 20, 2015. This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published.