iOS WebView integration¶
Use WKWebView to load https://app.traveln.ai/ with silent login headers. Enable cookies and JavaScript for a seamless experience.
SwiftUI + WKWebView¶
import SwiftUI
import WebKit
struct TravelnWebView: UIViewRepresentable {
let email: String
let phone: String
let firstName: String
let lastName: String
let apiKey: String
func makeUIView(context: Context) -> WKWebView {
let config = WKWebViewConfiguration()
config.preferences.javaScriptEnabled = true
config.websiteDataStore = .default()
let webView = WKWebView(frame: .zero, configuration: config)
webView.navigationDelegate = context.coordinator
var request = URLRequest(url: URL(string: "https://app.traveln.ai/")!)
request.setValue("Api-Key \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue(email, forHTTPHeaderField: "TRAVELN-EMAIL")
request.setValue(phone, forHTTPHeaderField: "TRAVELN-PHONE")
request.setValue(firstName, forHTTPHeaderField: "TRAVELN-FIRST-NAME")
request.setValue(lastName, forHTTPHeaderField: "TRAVELN-LAST-NAME")
webView.load(request)
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) {}
func makeCoordinator() -> Coordinator { Coordinator() }
class Coordinator: NSObject, WKNavigationDelegate {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
decisionHandler(.allow)
}
}
}
Cookie handling for session reuse¶
Use WKWebsiteDataStore.default() so cookies persist. If your app uses multiple WebViews, share the same data store instance.