Challenge Overview
Overview
The Hercules Personal Content DVR application is a stand-alone iOS app, allowing users to upload their own video content they recorded on their phone or tablet camera into their DVR for playback on their TV and syncing with other devices.
This assembly will implement resumable upload support in the application, using a new set of APIs on the backend services.
Resumable uploads
Resumable uploads will allow the app to upload and better handle network and app interruption. With the new APIs, you need to ensure an upload completes successfully in all of these cases:
- Network is lost then restored
- The app crashes or is killed
- The app goes into the background
- The network switches from Wifi to 3G (assuming the user allows 3G uploads)
- The network switches from 3G to Wifi
Basically, the upload should be allowed to pause and then continue when the conditions are right to support further uploading.
The user can cancel an upload at any time.
API details are available in the private forum.
UI Requirements
You are responsible to ensure the upload progress meters and textual display of progress and speed are accurate in all cases. If there is no uploading happening (no network available, or 3G only when the user has the 3G upload setting turned off), the speed display should say "Paused". The progress meter should always be accurate to the state of the upload, so it shouldn't reset to 0 or go past 100% even if the upload is stopped and resumed multiple times.
The only reason an upload should be restarted is if we get an error from the client's resumable upload API, in which case the progress meter will be reset to 0 and the upload restarted, similar to what happens now if an upload has to be reattempted.
"Open With" menu for photos
We currently have an "Open With..." system-wide menu option enabled for videos. This assembly will do the following:
- Fix a crash that happens when this is selected for videos
- Implement the same option for photos since those are now supported in the app
API updates
A number of functions, like moving, deleting, updating, etc... don't seem to work quite right with the updated API. This assembly will handle the minor updates necessary with the new API documentation in the forum. If something more than a minor change is necessary, please post in the forum so we can confirm scope.
Uploading new files by default
There is a new setting option called "Automatically upload new videos". Right now this setting isn't used, but this assembly will implement it to:
- Automatically detect new photos and videos
- Instead of showing the popup, just automatically upload the files to an "Automatic Uploads" album. If the album doesn't exist for a given user, you should create it. Inside the album, you should show all current and queued uploads as if the user manually started the uploads.
Please change the setting to say "Automatically upload new files", instead of "... new videos", since we will support photos and videos.
Final Submission Guidelines
Please see above