HERE iOS SDK Developer's Guide

App Submission Requirements

This section contains important information on how to prepare your HERE iOS SDK-enabled app for App Store submission. Be sure to follow the advice here to avoid store rejections caused by the HERE SDK.

Remove Simulator Architectures

Apple rejects apps that are submitted to the App Store with simulator-specific architectures (x86_64, i386). Similarly, Xcode also gives an error if you try to export these apps for other types of deployment. Prior to exporting your app, you must strip simulator-specific architectures from the NMAKit framework binary and rebuild your app.

Figure 1. Exporting According to Deployment Type

A script is provided with the HERE SDK to strip the simulator architectures from the NMAKit library. Before you build your app to upload to the store, make a copy of NMAKit.framework and run the script to create a framework that only contains ARM device architectures (arm64, armv7). This modified version of the framework should be included in any builds destined for the app store.

This script is located at the following location:
{SDK Root}/framework/strip_sim.sh
To run the script, open a terminal and go to the directory containing the script and execute it from there.

You can also add a script as part of your Xcode build process to automatically strip unnecessary architectures from frameworks. Depending on your build environment, this may work better than managing separate versions of NMAKit.framework. For more details about this solution, see this article on Stack Overflow.

Declare Private Data Access

Starting with iOS 10, you must statically declare access to private user data, such as address book and device location, before submitting your app to the App Store. Each declaration requires adding a key and a purpose string in your app's Info.plist file.

The following shows the required HERE iOS SDK data access declarations. You can use the recommended <string> entries in your app's Info.plist, or you can choose strings that are appropriate to your app.

Note: All HERE iOS SDK apps must have these declaration entries for the App Store submission process. App users are only prompted for the appropriate data access if your app uses the relevant HERE SDK feature.
<key>NSLocationWhenInUseUsageDescription</key>
<string>This is needed to determine your current location</string>
<key>NSCameraUsageDescription</key>
<string>This is needed for the LiveSight augmented reality feature</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>This is needed for the Bluetooth-based indoor positioning feature</string>
<key>NSMotionUsageDescription</key>
<string>This is needed for the indoor positioning feature</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This is needed to determine your current location</string>

You can find more information about these keys in the following article: https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html.

Questions About Privacy Access Settings

The HERE SDK contains references to the following methods:
  • [CLLocationManager startMonitoringForRegion:]
  • [CLLocationManager startRangingBeaconsInRegion:]
  • [CLLocationManager requestAlwaysAuthorization]
However, these calls are only performed if your app uses the HERE Positioning feature.

Due to the presence of these calls in the HERE SDK framework, you may be asked additional questions about Location and iBeacons during App Store submission even if you are not using HERE Positioning. The following contains some information to help with your App Store submission process.

If your app does not use HERE Positioning:

  • Q: Does this app detect startMonitoringForRegion:, startRangingBeaconsInRegion:, or both?

    A: These methods are referenced by the HERE iOS SDK framework, which is embedded in the app. However, due to the manner in which the App uses the HERE iOS SDK, these methods are never actually called.

  • Q: What is the user experience when the app detects the presence of a beacon?

    A: Please see above, the beacons are not utilized by the app due to the manner in which the app uses the HERE iOS SDK.

  • Q: What features in this app use background location?

    If you app utilizes background navigation (for example, if your app calls [NMANavigationManager backgroundNavigationEnabled]) then you can answer "Navigation". Otherwise you can answer "Background location is not being utilized due to the manner in which the app uses the HERE iOS SDK.

  • If this app uses 3rd party SDKs for iBeacons, please provide links to their documentation showing that background location is required for it to function.

    A: Please see above, iBeacons are not utilized due to the manner in which the App uses the HERE iOS SDK.

If your app uses HERE Positioning:

  • Q: Does this app detect startMonitoringForRegion:, startRangingBeaconsInRegion:, or both?

    A: Both methods are used by the embedded HERE iOS SDK framework to more accurately determine the user's current location indoors.

  • Q: What is the user experience when the app detects the presence of a beacon?

    A: The HERE iOS SDK uses the presence of beacons to provide accurate 3D location information indoors.

  • Q: What features in this app use background location?

    A: Background location is used to accurately determine the user's current position indoors, and also navigation, if your app uses background navigation. (For example, if your app calls [NMANavigationManager backgroundNavigationEnabled])

  • Q: If this app uses 3rd party SDKs for iBeacons, please provide links to their documentation showing that background location is required for it to function.

    A: You can find the HERE iOS SDK and its indoor positioning feature documentation at https://developer.here.com/mobile-sdks/documentation/ios-hybrid-plus/topics/advanced-positioning.html

App Transport Security (ATS) Exception

If your application uses the HERE Positioning feature, you need to add an exception to your application Info.plist file. This exception key trigger additional review during the App Store submission process, and you are required to provide justification for including it.

Feature Info.plist Entry Explanation
HERE Positioning
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>here.com</key>
    <dict>
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSIncludesSubdomains</key>
      <true/>
    </dict>
  </dict>
</dict>
This key is required because the HERE SDK currently downloads indoor radio maps via HTTP.