Skip to content

Examples

Complete integrations for SwiftUI, UIKit, Kotlin, Java, Flutter, and React Native using header-based silent login.

SwiftUI

See iOS integration for a full WKWebView SwiftUI component.

UIKit (Swift)

import UIKit
import WebKit

class TravelnViewController: UIViewController, WKNavigationDelegate {
  let webView = WKWebView(frame: .zero, configuration: {
    let c = WKWebViewConfiguration()
    c.preferences.javaScriptEnabled = true
    c.websiteDataStore = .default()
    return c
  }())

  override func viewDidLoad() {
    super.viewDidLoad()
    webView.navigationDelegate = self
    view.addSubview(webView)
    webView.frame = view.bounds

    var req = URLRequest(url: URL(string: "https://app.traveln.ai/")!)
    req.setValue("Api-Key XYZ", forHTTPHeaderField: "Authorization")
    req.setValue("john@example.com", forHTTPHeaderField: "TRAVELN-EMAIL")
    req.setValue("+15551234567", forHTTPHeaderField: "TRAVELN-PHONE")
    req.setValue("John", forHTTPHeaderField: "TRAVELN-FIRST-NAME")
    req.setValue("Doe", forHTTPHeaderField: "TRAVELN-LAST-NAME")
    webView.load(req)
  }
}

Flutter (pseudocode)

// Using webview_flutter, headers can be attached when loading the initial request
// final controller = WebViewController()
//   ..setJavaScriptMode(JavaScriptMode.unrestricted)
//   ..loadRequest(Uri.parse('https://app.traveln.ai/'), headers: {
//     'Authorization': 'Api-Key XYZ',
//     'TRAVELN-EMAIL': 'john@example.com',
//     'TRAVELN-PHONE': '+15551234567',
//     'TRAVELN-FIRST-NAME': 'John',
//     'TRAVELN-LAST-NAME': 'Doe',
//   });

React Native (pseudocode)

// Using react-native-webview
// <WebView
//   source={{
//     uri: "https://app.traveln.ai/",
//     headers: {
//       Authorization: "Api-Key XYZ",
//       "TRAVELN-EMAIL": "john@example.com",
//       "TRAVELN-PHONE": "+15551234567",
//       "TRAVELN-FIRST-NAME": "John",
//       "TRAVELN-LAST-NAME": "Doe",
//     },
//   }}
//   javaScriptEnabled
// />