title: expo location permissions work on android, but not on iOS
body: <p>I have a react-native app that uses expo.
  The location permissions work on android, but not on iOS.
  On a real iPhone (iOS version 14.4.2), it does nothing. On a simulator, I get this error message:</p>
  <p>[Unhandled promise rejection: Error: LOCATION_FOREGROUND permission is required to do this operation.]
  at node_modules/react-native/Libraries/BatchedBridge/NativeModules.js:103:50 in promiseMethodWrapper
  at node_modules/@unimodules/react-native-adapter/build/NativeModulesProxy.native.js:15:23 in moduleName.methodInfo.name
  at <a href="http://127.0.0.1:19000/node_modules/expo/AppEntry.bundle?platform=ios&amp;dev=true&amp;hot=false&amp;minify=false:293333:90" rel="nofollow noreferrer">http://127.0.0.1:19000/node_modules/expo/AppEntry.bundle?platform=ios&amp;dev=true&amp;hot=false&amp;minify=false:293333:90</a> in watchPositionAsync$
  at <a href="http://127.0.0.1:19000/node_modules/expo/AppEntry.bundle?platform=ios&amp;dev=true&amp;hot=false&amp;minify=false:293327:37" rel="nofollow noreferrer">http://127.0.0.1:19000/node_modules/expo/AppEntry.bundle?platform=ios&amp;dev=true&amp;hot=false&amp;minify=false:293327:37</a> in watchPositionAsync</p>
  <p>Update: I tried it on another Android device and it did not work, so maybe it works on my main Android phone because the permissions were already granted when running a previous version? There is a bug report about permissions breaking between Expo version 40 and 41 <a href="https://github.com/expo/expo/issues/12581" rel="nofollow noreferrer">https://github.com/expo/expo/issues/12581</a></p>
  <p>Here is what I'm using:</p>
  <p>app.json:</p>
  <pre><code>{
    &quot;expo&quot;: {
      &quot;name&quot;: &quot;Andiamo&quot;,
      &quot;slug&quot;: &quot;andiamo_places&quot;,
      &quot;version&quot;: &quot;1.0.0&quot;,
      &quot;orientation&quot;: &quot;default&quot;,
      &quot;icon&quot;: &quot;./assets/icon.png&quot;,
      &quot;splash&quot;: {
        &quot;image&quot;: &quot;./assets/splash.png&quot;,
        &quot;resizeMode&quot;: &quot;contain&quot;,
        &quot;backgroundColor&quot;: &quot;#ffffff&quot;
      },
      &quot;updates&quot;: {
        &quot;fallbackToCacheTimeout&quot;: 0
      },
      &quot;assetBundlePatterns&quot;: [
        &quot;**/*&quot;
      ],
      &quot;ios&quot;: {
        &quot;bundleIdentifier&quot;: &quot;com.andiamoplaces.andiamotravelapp&quot;,
        &quot;supportsTablet&quot;: true,
        &quot;infoPlist&quot;: {
          &quot;NSLocationUsageDescription&quot;:
            &quot;The app needs permission to access your location, if you want to be located on the map.&quot;,
          &quot;NSLocationWhenInUseUsageDescription&quot;: &quot;The app needs permission to access your location, if you want to be located on the map&quot;,
          &quot;NSLocationAlwaysUsageDescription&quot;: &quot;The app needs permission to access your location, if you want to be located on the map&quot;,
          &quot;NSLocationAlwaysAndWhenInUseUsageDescription&quot;: &quot;The app needs permission to access your location, if you want to be located on the map&quot;,
          &quot;NSPhotoLibraryUsageDescription&quot;: &quot;The app needs permission to your camera roll, if you want to upload pictures.&quot;,
          &quot;NSCameraUsageDescription&quot;: &quot;The app needs permission to your camera, if you want to take pictures from the app.&quot;
        }
      },
      &quot;android&quot;: {
        &quot;package&quot;: &quot;com.andiamoplaces.andiamotravelapp&quot;,
        &quot;adaptiveIcon&quot;: {
          &quot;foregroundImage&quot;: &quot;./assets/adaptive-icon.png&quot;,
          &quot;backgroundColor&quot;: &quot;#FFFFFF&quot;
        },
        &quot;permissions&quot;: [
          &quot;CAMERA&quot;,
          &quot;LOCATION&quot;
        ]
      },
      &quot;web&quot;: {
        &quot;favicon&quot;: &quot;./assets/favicon.png&quot;
      },
      &quot;description&quot;: &quot;&quot;
    }
  }
  </code></pre>
  <p>package.json:</p>
  <pre><code>{
    &quot;main&quot;: &quot;node_modules/expo/AppEntry.js&quot;,
    &quot;scripts&quot;: {
      &quot;start&quot;: &quot;expo start&quot;,
      &quot;android&quot;: &quot;expo start --android&quot;,
      &quot;ios&quot;: &quot;expo start --ios&quot;,
      &quot;web&quot;: &quot;expo start --web&quot;,
      &quot;eject&quot;: &quot;expo eject&quot;,
      &quot;postinstall&quot;: &quot;jetifier -r&quot;
    },
    &quot;dependencies&quot;: {
      &quot;@expo/vector-icons&quot;: &quot;^12.0.0&quot;,
      &quot;@react-native-community/clipboard&quot;: &quot;^1.5.1&quot;,
      &quot;@react-native-community/datetimepicker&quot;: &quot;3.2.0&quot;,
      &quot;@react-native-community/masked-view&quot;: &quot;0.1.10&quot;,
      &quot;@react-navigation/native&quot;: &quot;^3.8.4&quot;,
      &quot;@use-expo/font&quot;: &quot;^2.0.0&quot;,
      &quot;cross-fetch&quot;: &quot;^3.1.4&quot;,
      &quot;expo&quot;: &quot;^41.0.0&quot;,
      &quot;expo-camera&quot;: &quot;~11.0.2&quot;,
      &quot;expo-cli&quot;: &quot;^4.4.4&quot;,
      &quot;expo-clipboard&quot;: &quot;~1.0.2&quot;,
      &quot;expo-facebook&quot;: &quot;~11.0.5&quot;,
      &quot;expo-font&quot;: &quot;~9.1.0&quot;,
      &quot;expo-image-manipulator&quot;: &quot;~9.1.0&quot;,
      &quot;expo-image-picker&quot;: &quot;~10.1.4&quot;,
      &quot;expo-location&quot;: &quot;~12.0.4&quot;,
      &quot;expo-media-library&quot;: &quot;~12.0.2&quot;,
      &quot;expo-permissions&quot;: &quot;~12.0.1&quot;,
      &quot;expo-status-bar&quot;: &quot;~1.0.4&quot;,
      &quot;firebase&quot;: &quot;8.2.3&quot;,
      &quot;geolib&quot;: &quot;^3.3.1&quot;,
      &quot;global&quot;: &quot;^4.4.0&quot;,
      &quot;luxon&quot;: &quot;^1.26.0&quot;,
      &quot;native-base&quot;: &quot;^2.15.2&quot;,
      &quot;react&quot;: &quot;16.13.1&quot;,
      &quot;react-devtools&quot;: &quot;^4.13.2&quot;,
      &quot;react-dom&quot;: &quot;16.13.1&quot;,
      &quot;react-native&quot;: &quot;https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz&quot;,
      &quot;react-native-color-picker&quot;: &quot;^0.6.0&quot;,
      &quot;react-native-draggable-flatlist&quot;: &quot;^2.6.1&quot;,
      &quot;react-native-gesture-handler&quot;: &quot;~1.10.2&quot;,
      &quot;react-native-ionicons&quot;: &quot;^4.6.5&quot;,
      &quot;react-native-maps&quot;: &quot;0.27.1&quot;,
      &quot;react-native-material-menu&quot;: &quot;^1.2.0&quot;,
      &quot;react-native-modal&quot;: &quot;^11.10.0&quot;,
      &quot;react-native-pell-rich-editor&quot;: &quot;^1.7.0&quot;,
      &quot;react-native-popup-menu&quot;: &quot;^0.15.10&quot;,
      &quot;react-native-prompt-crossplatform&quot;: &quot;^1.6.1&quot;,
      &quot;react-native-ratings&quot;: &quot;^8.0.4&quot;,
      &quot;react-native-reanimated&quot;: &quot;~2.1.0&quot;,
      &quot;react-native-safe-area-context&quot;: &quot;3.2.0&quot;,
      &quot;react-native-safe-area-view&quot;: &quot;^1.1.1&quot;,
      &quot;react-native-screens&quot;: &quot;~3.0.0&quot;,
      &quot;react-native-simple-radio-button&quot;: &quot;^2.7.4&quot;,
      &quot;react-native-switch&quot;: &quot;^2.0.0&quot;,
      &quot;react-native-switch-selector&quot;: &quot;^2.1.4&quot;,
      &quot;react-native-vector-icons&quot;: &quot;^8.1.0&quot;,
      &quot;react-native-web&quot;: &quot;~0.13.12&quot;,
      &quot;react-native-webview&quot;: &quot;11.2.3&quot;,
      &quot;react-native-youtube-iframe&quot;: &quot;^2.0.1&quot;,
      &quot;react-navigation&quot;: &quot;^4.4.4&quot;,
      &quot;react-navigation-drawer&quot;: &quot;^2.7.1&quot;,
      &quot;react-navigation-stack&quot;: &quot;^2.10.4&quot;,
      &quot;react-navigation-tabs&quot;: &quot;^2.11.1&quot;,
      &quot;react-redux&quot;: &quot;^7.2.4&quot;,
      &quot;redux&quot;: &quot;^4.1.0&quot;,
      &quot;redux-persist&quot;: &quot;^6.0.0&quot;,
      &quot;redux-thunk&quot;: &quot;^2.3.0&quot;
    },
    &quot;devDependencies&quot;: {
      &quot;@babel/core&quot;: &quot;~7.9.0&quot;,
      &quot;jetifier&quot;: &quot;^1.6.8&quot;
    },
    &quot;private&quot;: true
  }
  </code></pre>
  <p>code:</p>
  <pre><code>startUserLocationUpdates = async () =&gt; {
      const returns = await Location.watchPositionAsync(
        {
          accuracy: Location.Accuracy.BestForNavigation,
          timeInterval: 1000,
          // distanceInterval: 0,
        },
        (loc) =&gt; {
          if (this.props.ShowLocation) this.centerMapTo(loc.coords.latitude, loc.coords.longitude);
          this.props.onSetCurrentLocation({ latitude: loc.coords.latitude, longitude: loc.coords.longitude });
        }
      );
      this._removeLocationUpdates = returns.remove;
    };
  </code></pre>