Skip to main content

iOS Integration

Table of Contents

  • Getting started
    • Integrate your project with Rezolve Point SDK
    • Integrate your project with Braze SDK
  • Interaction between Braze SDK and Rezolve Point SDK
    • Start Braze SDK Services
    • Setup Rezolve Location Services

Getting started

This documentation depends on Rezolve Point SDK and Braze SDK. Both dependencies can be managed by CocoaPods or Swift Package Manager.

Integrate your project with Rezolve Point SDK

You can find detailed instructions here

  1. Import Rezolve Point SDK to your class: import BDPointSDK

  2. Implement Rezolve BDPGeoTriggeringEventDelegate:

    extension YourClass: BDPGeoTriggeringEventDelegate {

    func didEnterZone(_ triggerEvent: GeoTriggerEvent) {
    // Your logic when the device enters a Rezolve Zone
    }

    func didExitZone(_ triggerEvent: GeoTriggerEvent) {
    // Your logic when the device leaves a Rezolve Zone
    }
    }
  3. Assign GeoTriggeringEvent delegate with your implementation using BDLocationManager

    let instanceOfYourClass = YourClass()
    BDLocationManager.instance()?.geoTriggeringEventDelegate = instanceOfYourClass
  4. Authenticate with the Rezolve services using BDLocationManager

    BDLocationManager.instance()?.initialize()(withProjectId: projectId) { error in
        guard error == nil else {
    print("There was an error initializing the Rezolve Point SDK: \(error.localizedDescription)")
    return
    }
    }

Integrate your project with Braze SDK

  1. Install the Braze SDK and then import to your class: import BrazeKit

  2. Add a static property to your AppDelegate class

    class AppDelegate: UIResponder, UIApplicationDelegate {
    static var braze: Braze? = nil
    }
  3. Configure Braze SDK within the application:didFinishLaunchingWithOptions method.
    For further information refer to Braze Developer Documentation

    ```swift
    let configuration = Braze.Configuration(
    apiKey: "YOUR-APP-IDENTIFIER-API-KEY", // Should be taken from Braze Portal -> Manage Settings -> Settings Tab -> Your App -> API Key
    endpoint: "YOUR-BRAZE-ENDPOINT" // Should be taken from Braze Portal -> Manage Settings -> Settings Tab -> Your App -> SDK Endpoint
    )

    let braze = Braze(configuration: configuration)
    AppDelegate.braze = braze
    ```
  4. Track Braze custom events in your Rezolve Entry / Exit events.

    func didEnterZone(_ triggerEvent: GeoTriggerEvent) {

    print("Entered Zone: \(String(describing: triggerEvent.zoneInfo.name))")

    // Name the custom event
    let customEventName = "bluedot_entry"

    // Map the Location and Zone attributes into a properties dictionary
    var properties = [
    "zone_id": "\(triggerEvent.zoneInfo.id)",
    "zone_name": "\(triggerEvent.zoneInfo.name)",
    "latitude": "\(triggerEvent.entryEvent?.locations[0].coordinate.latitude ?? 0.0)",
    "longitude": "\(triggerEvent.entryEvent?.locations[0].coordinate.longitude ?? 0.0)",
    "speed": "\(triggerEvent.entryEvent?.locations[0].speed ?? 0.0)",
    "bearing": "\(triggerEvent.entryEvent?.locations[0].course ?? 0.0)",
    "timestamp": "\(triggerEvent.entryEvent?.eventTime.timeIntervalSince1970 ?? 0.0)",
    ]

    // Map the Custom Data attributes into properties
    let customData = triggerEvent.zoneInfo.customData
    if !customData.isEmpty {
    customData.forEach { data in properties["\(data.key)"] = "\(data.value)"}
    }

    // Log the Custom Event in Braze
    AppDelegate.braze?.logCustomEvent(name: customEventName, properties: properties)
    }

    func didExitZone(_ triggerEvent: GeoTriggerEvent) {

    print("Exited Zone: \(String(describing: triggerEvent.zoneInfo.name))")

    // Name the custom event
    let customEventName = "bluedot_exit"

    // Map the Zone attributes into a properties dictionary
    var properties = [
    "zone_id": "\(triggerEvent.zoneInfo.id)",
    "zone_name": "\(triggerEvent.zoneInfo.name)",
    "timestamp": "\(triggerEvent.exitEvent?.eventTime.timeIntervalSince1970 ?? 0.0)",
    "checkedInDuration": "\(triggerEvent.exitEvent?.dwellTime ?? 0.0)"
    ]

    // Map the Custom Data attributes into properties
    let customData = triggerEvent.zoneInfo.customData
    if !customData.isEmpty {
    customData.forEach { data in properties["\(data.key)"] = "\(data.value)"}
    }

    // Log the Custom Event in Braze
    AppDelegate.braze?.logCustomEvent(name: customEventName, properties: properties)
    }