Creating iOS Binding

1. Generate bindings from Cocoapods


Install Objective Sharpie: Objective Sharpie Installation

For more information about generating iOS bindings from CocoaPods: iOS Bindings Example


IndoorAtlas SDK

sharpie pod init ios IndoorAtlas
sharpie pod bind --namespace=IndoorAtlas.iOS


IndoorAtlas Wayfinding

sharpie pod init ios IndoorAtlasWayfinding

If this fails, open generated Podfile and add this line to the top of the file: source 'git@github.com:IndoorAtlas/CocoaPods-Specs.git', then type pod install


sharpie pod bind --namespace=IndoorAtlasWayfinding.iOS

If this fails, open Info.plist in Pods/IndoorAtlasWayfinding/indooratlas-ios-wayfinding/IndoorAtlasWayfinding.framework/Info.plist, and change DTSDKName value to iphoneos11.3 (Xcode 9.3 required)


2. Create a binding library project

IndoorAtlas SDK

Open Visual Studio and choose New Solution -> iOS Bindings Library

Select the location of the new project and give it a descriptive name. Then click Create.


Copy-paste IndoorAtlas_ApiDefinitions.cs and IndoorAtlas_StructsAndEnums.cs from the previous step to this project's ApiDefinition.cs and Structs.cs

    - Check parts that are marked with [Verify] tag. If they are ok, remove these tags

    - ApiDefinition.cs: Change DidUpdateLocations NSObject to IALocation

    - Structs.cs: Change enum type nint to long, set CLLocationCoordinate2D to [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]



Add IndoorAtlas iOS framework to the project: 

    - Native References -> Add Native Refence -> Navigate to the same location as where IndoorAtlas_ApiDefinitions.cs and IndoorAtlas_StructsAndEnums.cs are located -> Choose IndoorAtlas.framework

Build the project: Project generates .dll to the output directory. This .dll can be added to any Xamarin project


Create new Xamarin iOS App

   Add previously generated .dll to the project: 

    - References -> Edit references -> .NET Assembly -> Browse -> Add generated .dll

IndoorAtlas Wayfinding

Open Visual Studio and choose New Solution -> iOS Bindings Library

Select the location of the new project and give it a descriptive name. Then click Create.

Copy-paste IndoorAtlasWayfinding_ApiDefinitions.cs from the previous step to this project's ApiDefinition.cs

    - Check parts that are marked with [Verify] tag. If they are ok, remove these tags

    - NSNumber should be changed to double

Add IndoorAtlasWayfinding iOS framework to the project: 

    - Native References -> Add Native Refence -> Navigate to the same location as where IndoorAtlasWayfinding_ApiDefinitions.cs is located -> Choose IndoorAtlasWayfinding.framework


Build the project

Project generates .dll to the output directory. This .dll can be added to any Xamarin project


Create new Xamarin iOS project and add the generated .dll: 

    - References -> Edit references -> .NET Assembly -> Browse -> Add generated .dll

Before trying to run the project with IndoorAtlasWayfinding:

    - Right-click on the project -> Options -> iOS Build -> Untick "Enable device-specific builds"