Register
Submit a solution
The challenge is finished.

Challenge Overview

Note - This challenge has shorter submission, review and appeals phases + a fixed reviewer fee

Welcome to the XPrize Visioneers Native iOS App Cache Behavior Modified & Other Bug Fixes challenge.


In the earlier challenges, we’ve built the various screens for this app and then hooked it up to the client API. The code is available on our Github repository (request access via forums). Now, we want to implement the pending screen for Resources and fix some issues found in client feedback.

Challenge Requirements



The scope of this challenge involves


A) Changes to Caching Behavior

Current Implementation

We have the following settings for app (Under Settings -> XPrize in device settings)

Cache Expiry (minutes) - Default is currently 1 week (10800 minutes)
Cache Expiry for Messages (minutes) - Default is currently 1 week (10800 minutes
Delete Application Cache Now (toggle)
Delete Message Cache Now (toggle)


The current caching rules are
  • For tabs/ screens other than messages, the data received from server must be cached until the ‘Cache Expiry’ parameter is hit
  • For messages, the data received from server must be cached until the ‘Cache Expiry for Messages’ parameter is hit
  • Setting ‘Delete Application Cache Now’ - should clear the cache for all data for tabs other than messages
  • Setting ‘Delete Message Cache Now’ should clear the cache for messages tab
This is a screenshot of current cache settings

Screen Shot 2017-08-23 at 5.03.46 PM.png


Required Changes
 
1) The user must be able to login offline and all data must be retrieved from the app cache
2) Change default cache values to
 
·     Cache Expiry (minutes) - 1 Day
·     Cache Expiry for Messages (minutes) - The messages caching policy should follow the general caching policy. Instead, substitute this option to “Intervals for Checking New Messages” and set that default to 30 mins
·     Delete Application Cache Now (toggle) – Change text to “Reset Cache on Next Launch
·     Delete Message Cache Now (toggle) – This should be combined with toggle above – Remove this option
  3) The rules to implement caching need to be updated:
·       Rule for all screens should be the same. The data received from server must be cached until the ‘Cache Expiry’ parameter is hit. Caching should not prevent new data from coming in (i.e. messages)... Caching should only apply to existing data.
 
Other Fixes
 

4) Need to add option to “Refresh Data” on the User Profile Page. This should be the first item, above Terms & Conditions. This should invoke the corresponding API again.
5) List the app version number under settings. Use v0.1 for this version
6) Current implementation caches the Resources screen and Box URLs - this has broken the flow as Box URLs are dynamically re-generated each time. Remove this caching behavior from ‘Resources’ screen
7) Integrate the provided icons
8) Background image for the prizes should change when a new prize is selected and still appears to be hard-coded. They should be using the api/sponsor/{id}/prizes  field prizeBannerImageURL for the background image.
9) Login Screen - Info displayed when clicking Privacy Policy needs to match the design of Terms of Use (Do not use a document Viewer)
10) User Profile Screen - iPad - Hide "Send Feedback" option
11) Login Screen - iPad - Need to add XPRIZE logo. Should have the XPRIZE logo on the login screen as on the iPhone
12) When going offline, we are still getting a "No Internet Connection Screen". This screen should not appear.  The cached data should be displayed and if no cache data is available then display “No Internet Connection Available”.

 

General Notes



NOTES
  • Both iPhone and iPad screens are in scope. There should be NO hardcoding of data on respective screens once above mentioned APIs are implemented.
  • We have already run the corresponding Android challenge last week. The code for that challenge is available on our Android Github repo (request access via forums) so you can check it for reference purposes.
  • All source code changes must be well commented and MUST follow existing coding conventions
  • If you face any API issues or have doubts related to request response for any API, please raise it in the forums so it can be clarified by client.
  • The app works in both portrait and landscape modes
  • App must support 2x and 3x assets and retina devices
  • App must support iOS 10.x
  • All code must be written in Swift and the project must use latest XCode version. Do not use Objective-C or Bridging approach
  • Please ask in the forums if you wish to use any open-source third-party libs to ensure there are no license violations


Final Submission Guidelines

 

 

- XCode Project with all source code that addresses the requirements

- Deployment guide with configuration & verification steps. Describe all config params and include steps to run

- Demo video (Mandatory and will be scored down if not provided)

 

- Winner will be asked to raise a merge request to the repo

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30058994