iOS 14 Location Changes

As of iOS 14, users will now have the option to use approximate instead of precise location. Users who choose to use this new approximate location permission should not expect geofences or beacons to be triggered. Ref:

The below features require precise location authorization to work in iOS 14 and above. The MobilePush SDK will send only precise location updates to Marketing Cloud Server and approximate location updates of user device will be ignored.

If location is enabled in your MobilePush SDK configuration (via MarketingCloudSDKConfigBuilder() sfmc_setLocationEnabled()), you can call a single method to use the Marketing Cloud location messaging feature.

Location Messaging

In addition, Apple requires adding keys to your Info.plist file to enable location services:

  • NSLocationAlwaysUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription
  • NSLocationWhenInUseUsageDescription

Review the Apple documentation for more information.

MarketingCloudSDK requires “Always” permissions for full geofence and beacon functionality. An application does not receive location messages if “When-in-use authorization” is selected by the app user.

When your application is ready to enable location features, including geofence and beacon messaging, call the MarketingCloudSDK framework’s method to start watching location.

The MarketingCloudSDK+Location.h” header file details additional methods to get information about location and control the frameworks behavior.

MobilePush prevents the app from displaying a geofence message with an empty alert. If you include AMPscript in your message that returns no content or an empty string, the mobile app does not display that message.

Beacon Support

We enable beacon support when you implement the location requirements on this page.

To range for beacons in the background, add an entry to your app’s Info.plist. This permission ensures that your app can range for beacons when your app is in the background or suspended.

Implement this key to enable this function. “App registers for location updates” is required to enable location in the MarketingCloudSDK and to range for beacons in the background.

MobilePush prevents the app from displaying a beacon message with an empty alert. If you include AMPscript in your message that returns no content or an empty string, the mobile app will not display that message.

To understand how beacons behave in different situations, review the MobilePush beacons help documentation (

If you create your own CLLocationManager object, we cannot guarantee that features of our SDK will work as intended.

If you have enabled notifications using MarketingCloudSDK and have called -sfmc_startWatchingLocation, you can access the device’s last known location using the SDK.