Being Proactive with Background Fetch

So far, the MustC application is shaping up quite nicely. You can add family members and associate movies with them, and these movies are automatically enriched with the first rating available from the movie database API. You may still have some movies in your app that were added earlier and don't have a rating, although the ratings for the existing movies might be correct for now, they might not be correct in a couple of days, weeks, or months from now. You could update the ratings whenever the user accesses them, but it's not very efficient to do this. You might reload the same movie a couple of times in a single session, which isn't very useful.

Ideally, the movies would be updated in the background, when the user isn't using the app. Functionality such as this can be implemented using background fetch. This chapter is all about fetching data on behalf of the user while the app isn't active in the foreground. Implementing this feature can significantly benefit your users because your app will have fresh content every time the user opens up the app. No pull to refresh is needed, and users love these little touches of magic in the apps they use.

This chapter covers the following topics:

Besides implementing the background fetch feature, you will do a lot of refactoring. It's important to understand how and when to refactor your code, because it's highly unlikely that you'll be able to exactly nail a flexible setup for your app that can adapt to any requirement that is thrown at it. Being able to refactor your code whenever you see duplication or readability issues is an essential skill that you will utilize almost every day as your understanding of your code base, the requirements, and the iOS platform grows.