title: Apple rejection because UIBackgroundMode = location
body: <p>I submitted an app which tracks the user's location (and sends it to the server) at some fixed intervals chosen by the user (5 min, 10 min, 30 min, 1 h). The app should work in background, too (sending the requests) and I have declared it as <code>UIBackgroundMode = location</code>. I am able to send the requests while in background at those fixed intervals. Apple rejected it, suggesting the following:</p>
  
  <blockquote>
    <p>We found that your app uses a background mode but does not include
    functionality that requires that mode to run persistently. This
    behavior is not in compliance with the App Store Review Guidelines.</p>
    
    <p>We noticed your app declares support for location in the
    UIBackgroundModes key in your Info.plist but does not include features
    that require persistent location. </p>
    
    <p>It would be appropriate to add features that require persistent use of
    real-time location updates while the app is in the background or
    remove the "location" setting from the UIBackgroundModes key. If your
    application does not require persistent, real-time location updates,
    we recommend using the significant-change location service or the
    region monitoring location service.</p>
    
    <p>For more information on these options, please see the "Starting the
    Significant-Change Location Service" and "Monitoring Shape-Based
    Regions" sections in the Location Awareness Programming Guide.</p>
    
    <p>If you choose to add features that use the Location Background Mode,
    please include the following battery use disclaimer in your
    Application Description:</p>
    
    <p>"Continued use of GPS running in the background can dramatically
    decrease battery life."</p>
  </blockquote>
  
  <p>If I change significant location change and remove <code>UIBackgroundMode</code> key from <code>Info.plist</code>, the app will be killed in background and will wake up only if the event occurs. But I must send the request to server every 5 minutes for example and my app is killed in the background (let's say the user does not move and the event is not <code>trigger = no</code> requests are sent to server).</p>