Installation

Following is a simple way to send data to Hardal.

// Simple Hardal track implementation
let signalId = "your-hardal-signal-id"
let eventName = "purchase" // Or any name you would like to use

// You can add any data
let eventData: [String: Any] = [:]

let url = URL(string: "https://\(signalId)-signal.usehardal.com/push/hardal")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let body: [String: Any] = [
   "event_name": eventName, 
   "type": "event", // Must be provided
   "payload": [
       "website": signalId, // Must be provided
       "data": eventData 
   ]
]

request.httpBody = try? JSONSerialization.data(withJSONObject: body)

URLSession.shared.dataTask(with: request) { _, _, _ in }.resume()

Example Usage

The Hardal client allows you to send any custom data structure as part of your event payload. Here is an example

// Simple example of tracking a purchase event with Hardal in Swift
let signalId = "your-hardal-signal-id"
let eventName = "purchase"

// Example purchase data
let purchaseData: [String: Any] = [
    "transaction_id": "TX-12345",
    "currency": "TRY",
    "value": 149.99,
    "items": [
        [
            "product_id": "SKU001",
            "name": "Premium Headphones",
            "price": 149.99,
            "quantity": 1
        ]
    ]
]

// Track the event
let url = URL(string: "https://\(signalId)-signal.usehardal.com/push/hardal")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let body: [String: Any] = [
    "event_name": eventName,
    "type": "event",
    "payload": [
        "website": signalId,
        "data": purchaseData
    ]
]

request.httpBody = try? JSONSerialization.data(withJSONObject: body)

URLSession.shared.dataTask(with: request) { _, _, _ in }.resume()

Troubleshooting

Validation

To validate your iOS integration:

  1. Use the debug console in Xcode
  2. Monitor network requests in the debug navigator
  3. Check for successful HTTP responses (200 status code)
  4. Verify events appear in your Hardal dashboard

Enable verbose logging in debug builds to get detailed information about event tracking and network requests.