Challenge Overview
INTRODUCTION
In this challenge we’ll be updating the existing truPortal iPad app to tie together the web services and UI modifications to support Mustering. Mustering is a real-time account or listing of the credentials/persons that have “scanned in” on selected readers since a defined event has occurred.
REQUIREMENTS
You’ll be updating the provided Xcode project to include the Mustering features for iPad only. Both landscape and portrait orientations must be supported, as well as localizations for any changes/additions made. Web services must be linked up to the UI updates and new Mustering screens completed in a previous challenge.
RESOURCES
In the challenge forums you’ll find:
Source Code
This is the latest codebase for the iPad app. Use this Xcode project to do your development and final submission.
Mustering Requirements Document
This document provides an overview of Mustering, use cases and general requirements for implementing functionality from the wireframes.
Mustering API Appendix
This document provides further information on the GetMusteringInformationAsJSON web services call and how to interact with it within the app.
Mustering Wireframes
For this challenge you’ll be making some minor updates to the Mustering screens implemented in a previous challenge. The wireframes are for the web version of the app, however they should be used for guidance on functionality, button placement, etc.
User Accounts/Resources
Access URLs, user accounts, etc. are provided for testing purposes.
APP CHANGES
Outlined below are the main areas of the app that you’ll be updating. Reference the wireframes for UI implementation. Reference the requirements document for further details on logic and functionality including how the web services work together with the UI.
Web Services Additions
-- Update the call to the “ModifyReader” service to pass a value for “musteringMode” of either “0” for off or “1” for on
-- See a sample ModifyReader request in the Resources repository
-- Update the call to “GetReaders” to include reading the value of musteringMode from the response
-- Update any related model objects for devices to include and track the musteringMode value
Web Services Integration
-- Remove mock data and calls from all Mustering screens and replace them with live web services calls completed in a previous challenge
-- Calls to GetMusteringInformationAsJSON will need to be done periodically to check if a Mustering event is active as they can be started from other devices
-- If the internet connection is lost, ensure that all Mustering data is refreshed as soon as the connection is restored
-- Mustering data must be cached locally for use in history, logs and reports
-- Core data is already being used in the app - use this for caching of data for the above
All Mustering Screens
-- Mustering alert in the navigation area should only appear if there is an active Mustering event
-- Keep Warnings and Errors indicators in place (do not shift)
-- Background color of header area with buttons should match wireframes (light grey)
-- Buttons on the right side should be aligned to those in the navigation bar
-- Right justify the last button to the Logout button in navigation
-- Table styles do not match the rest of the app
-- Headers should not be rounded and have incorrect background gradient
-- Tables should fill 100% of the available width and height
-- Safe/Unsafe list tables should alternate row colors depending on the list
-- Safe list should alternate light green/very light green (instead of current white/grey)
-- Unsafe list should alternate light red/very light red (instead of current white/grey)
-- In all tables change “Reader Location” header to “Reported By”
-- Search should be able to be cancelled always, not just when text is cleared
-- Test Export functionality - doesn't appear to be working fully on the mail controller
-- Need a "Back" button next to the Menu button
-- Safe/Unsafe list toggle text should be easier to read
-- Background colors should be darker and match the wireframes
-- Dates should be formatted MM/DD/YY HH:MM A
-- When swiping a table row to modify a person’s status, the button color should match to the list to where the person is being moved
-- Move to Safe list - green
-- Move to Unsafe list - red
Main Mustering Screen
-- This list must be refreshed frequently in order to display the most up to date information on person status, as status may be updated from multiple locations
-- Web services should be called in the background in short intervals to keep this list current
Device Detail Screen
-- A new checkbox for “Muster reader” was added in a previous challenge
-- The value for this checkbox corresponds to the musteringMode property mentioned in the above web services additions
-- Read/save the value for this checkbox with the updated web services calls
Final Submission Guidelines
-- Updated Xcode 7.2 project with all screens and functionality as outlined above and in the specification document
-- Code must compile against iOS SDK 9.2 with a deployment target of iOS 7.0
-- Develop for iPad size classes, with all orientations supported
-- Use XIBs for all views
-- All added resources/code must be localized
-- All code must be written in Objective-C and be well commented
-- Upload your source project as a zip