Document Navigation SDK for iOS Guides Set Up Your Project Core SDK Overview

Core SDK Overview

The AMAP iOS Base SDK provides the core foundation and shared resources required by all AMAP iOS SDKs, including the Map SDK, Location SDK, and Navigation SDK. You must integrate this SDK before using any other AMAP iOS SDK.

Before You Begin

1. Starting with iOS Map SDK V4.0.0, iOS Location SDK V2.0.0, and iOS Navigation SDK V2.0.0, all AMAP iOS SDKs require the Base SDK.

2. The Base SDK V1.2.0 and later includes IDFA services. If your app does not use these services, see Submitting to the App Store.

3. Configure your AMAP API key as follows:

[AMapServices sharedServices].apiKey = @"Your API Key";

Configure Permissions

Network Permissions — HTTPS Support (Required)

App Transport Security (ATS) is a security feature introduced by Apple in iOS 9. When enabled, ATS forces apps to connect to network services over HTTPS instead of HTTP, protecting user data through encryption. While ATS is enabled by default, developers could previously disable it. However, starting January 1, 2017, Apple requires all apps submitted to the App Store to have ATS enabled.

The following steps describe how to configure AMAP iOS SDKs for ATS compliance.

Step 1: Update the SDK

Update your SDK to the minimum version listed in the table below.

Product

Minimum HTTPS Version

Release Date

iOS Base SDK

V1.3.2 or later

2016-11-08

iOS 3D Map SDK

V4.5.0 or later

2016-12-08

iOS Search SDK

V4.4.1 or later

2016-12-02

iOS Location SDK

V2.2.0 or later

2016-11-02

iOS Navigation SDK

V2.3.0 or later

2016-10-13

Step 2: Enable HTTPS

Add the following code before configuring your AMAP API key:

[[AMapServices sharedServices] setEnableHTTPS:YES];

IDFA Permissions (Optional)

The Base SDK V1.2.0 and later includes IDFA (Identifier for Advertisers). This may affect your app's App Store review process.

Purpose of IDFA

IDFA helps identify users more accurately, allowing us to better track issues you encounter while using the SDK and ensure SDK stability. If your app integrates advertising services, we recommend using the standard version of the SDK.

If your app does not integrate any advertising services but needs to track ad-driven installs, you can still use the standard version. See the instructions below.

IDFA Options During App Store Review

When submitting your app to the App Store, you must select the appropriate IDFA options:

App Store Connect Advertising Identifier IDFA settings page showing attribute app installation to a previously served advertisement option highlighted for iOS app submission with AMAP SDK

The four options represent the following:

1. Serve advertisements within the app — Select this if your app displays ads.

2. Attribute this app installation to a previously served specific advertisement — Select this if you use third-party tools to track ad-driven installs and other events, even if your app does not display ads.

3. Attribute an action taken within this app to a previously served specific advertisement — Select this if you use third-party tools to track ad-driven user actions.

4. iOS "Limit Ad Tracking" setting — Select this if your app accesses IDFA. This option is required whenever you use IDFA.

Resolving App Store Rejection

- If your app only displays ads and does not track ad-driven installs, select options 1 and 4.

- If your app does not display ads but accesses IDFA, select options 2 and 4.

Using the IDFA-Free Version

If you prefer not to use the IDFA version, download the IDFA-free version.

Alternatively, use CocoaPods:

1. Edit your Podfile:

platform :ios, '9.0'
target 'YourProjectTarget' do
  pod 'AMapLocation-NO-IDFA' # IDFA-free Location SDK
end

2. Run the following command:

pod install

If the SDK cannot be updated, run pod repo update to update your local CocoaPods repository.

Wi-Fi Information Permissions (Optional)

On iOS 12 and later, you must enable the Wi-Fi information capability in Xcode. This automatically adds the required permission to your App ID and app's entitlements.

Configuration Steps

1. In Xcode, navigate to your project target:

Xcode → [Project Name] → Targets → [Target Name] → Capabilities

2. Find Access WiFi Information and toggle it ON.

Xcode Capabilities settings showing Access WiFi Information toggle switched ON for QSmartLink iOS project required for AMAP SDK integration

After completing these steps, your app's .entitlements file will include the following key-value pair:

Xcode Entitlements File showing Access WiFi Information key set to Boolean YES value for AMAP iOS SDK WiFi capability configuration

Your app can now retrieve the Wi-Fi SSID on iOS 12 and later.

Region & Language Settings

/// Country code property
@property (nonatomic, copy) NSString *countryCode;
[AMapServices sharedServices].countryCode = @"SG";

// Language type
typedef NS_ENUM(int, AMapRegionLanguageType)
{
    /// Simplified Chinese
    AMapRegionLanguageTypeZhHans = 0,
    
    /// Traditional Chinese (Hong Kong)
    AMapRegionLanguageTypeZhHantHk,
    
    /// English
    AMapRegionLanguageTypeEn,
    
    /// Spanish
    AMapRegionLanguageTypeEs,
    
    /// Portuguese
    AMapRegionLanguageTypePt,
    
    /// French
    AMapRegionLanguageTypeFr,
    
    /// German
    AMapRegionLanguageTypeDe,
    
    /// Thai
    AMapRegionLanguageTypeTh,
    
    /// Japanese
    AMapRegionLanguageTypeJa,
    
    /// Korean
    AMapRegionLanguageTypeKo,
    
    /// Arabic
    AMapRegionLanguageTypeAr,
    
    /// Turkish
    AMapRegionLanguageTypeTr,
    
    /// Hebrew
    AMapRegionLanguageTypeHe,
    
    /// Italian
    AMapRegionLanguageTypeIt,
    
    /// Russian
    AMapRegionLanguageTypeRu,
    
    /// Malay
    AMapRegionLanguageTypeMs,
    
    /// Indonesian
    AMapRegionLanguageTypeId,
    
    /// Vietnamese
    AMapRegionLanguageTypeVi,
    
    /// Polish
    AMapRegionLanguageTypePl,
    
    /// Czech
    AMapRegionLanguageTypeCs,
    
    /// Ukrainian
    AMapRegionLanguageTypeUk,
    
    /// Azerbaijani
    AMapRegionLanguageTypeAz,
    
    /// Max Value Marker
    AMapRegionLanguageTypeMax
};

[AMapServices sharedServices].regionLanguageType = AMapRegionLanguageTypeEn;

// RTL Status:
// 0: Not set, follows the global setting
// 1: Disabled
// 2: Force enabled
typedef NS_ENUM(NSInteger, AMapAttributeRTLState)
{
    AMapAttributeRTLStateDefault = 0,   // Not set, follows the global setting
    AMapAttributeRTLStateDisabled,      // Disabled
    AMapAttributeRTLStateEnabled        // Force enabled
};
[AMapServices sharedServices].enableRTLLayout = AMapAttributeRTLStateEnabled;