Skip to content

iOS App that tracks the location and loads related images.

Notifications You must be signed in to change notification settings

messeb/ios-hiker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iOS Hiker App

An application that tracks the hiker's position in the background and creates a photo stream based on those locations.

Empty Hike Tour Request Location Decline Permission Loading Image for Location

App Logic Flow Idea

flowchart TD
    A1[Start Tracking Hiker Position] --> A2[Track Hiker Position Continuously]
    A2 --> A3{Is App in Foreground?}
    
    A3 -- Yes --> B2[Load Saved Positions from Store]
    B2 --> B3[Fetch Images for Each Position]
    B3 --> B4[Display Images in UI]
    
    B4 --> D1[Track and Save Position in Foreground]
    D1 --> B2

    A3 -- No --> C1[Track and Save Position in Background]
    C1 --> A2
Loading
  • Continuous Tracking: The app tracks the user's location continuously, whether it is in the foreground or background.
  • Separation of Concerns: Location tracking is independent of image fetching.
  • Foreground-Only Image Loading: Images are only fetched and displayed when the app is in the foreground.

Implementation Details

  • Flickr API: The app utilizes the flickr.photos.search endpoint for fetching images based on location. Although this endpoint may return the same photos for different locations, I chose to avoid to use another endpoint to focus on location tracking, general photo loading, and displaying the photo stream.
  • Testing in Xcode: Therefore it's recommended to test location changes and the image loading behavior over the Xcode "Simulate Location" feature.

Learnings / Challenges

  • Unreliable Data Sources: Managing unreliable data sources, such as user positions, is a challenge best addressed with robust automated test cases (see Open Points).
  • User Permissions: Handling user permissions accurately is crucial to ensure the app reflects the current status to the user correctly.
  • State Management: Technical state management within the app is essential to consistently display the correct state to the user.
  • Data Caching: Caching external data is necessary to support fast re-rendering of the layout.

Open Points

  • Global Loading State: A coordinated approach to loading API data and images needs to be implemented. This includes limiting parallel requests and centralizing error handling from the server.
  • Testing: Automated tests are currently missing. However, the use of protocols should facilitate the creation of abstracted tests for each sub-component.
  • Error Handling: Proper interception of incorrect image loading has yet to be implemented.
  • Permission Handling: The app needs to handle permission changes dynamically while the user is on a hike.

About

iOS App that tracks the location and loads related images.

Topics

Resources

Stars

Watchers

Forks

Languages