iOS
Auf iOS kommuniziert die iframe mit der Host-Anwendung über die webkit bridge. Konfigurieren Sie eine WKWebView mit einem Script-Message-Handler namens bridge und dekodieren Sie den JSON-String, den die iframe postet.
Einbetten und lauschen
struct WebView: UIViewRepresentable {
@Binding var path: NavigationPath
class Coordinator: NSObject, WKNavigationDelegate, WKScriptMessageHandler {
var webView: WKWebView?
var onMessageReceived: (Any) -> Void
required init(onMessageReceived: @escaping (Any) -> Void) {
self.onMessageReceived = onMessageReceived
super.init()
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.webView = webView
}
// Nachricht von WKWebView empfangen
func userContentController(
_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage
) {
print(message.body)
self.onMessageReceived(message.body)
}
}
func onMessageReceived(body: Any) -> Void {
DispatchQueue.main.async {
path.append(body as! String)
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(onMessageReceived: onMessageReceived)
}
func makeUIView(context: Context) -> WKWebView {
let coordinator = makeCoordinator()
let userContentController = WKUserContentController()
userContentController.add(coordinator, name: "bridge")
let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
let _wkwebview = WKWebView(frame: .zero, configuration: configuration)
_wkwebview.navigationDelegate = coordinator
return _wkwebview
}
func updateUIView(_ webView: WKWebView, context: Context) {
let companyIdentifier = AppConfig.companyIdentifier
let request = URLRequest(url: URL(string: "https://iframe.legit.health/?company=" + companyIdentifier)!)
webView.load(request)
}
}
Der Coordinator lauscht auf Ereignisse von der iframe über den bridge-Message-Handler. Wenn die iframe ein Ereignis postet, wird userContentController(_:didReceive:) mit dem JSON-String in message.body aufgerufen; dekodieren Sie es, um nach event.message weiterzuleiten.
Siehe Abschnitt "Callbacks" für den vollständigen Katalog.
Nächste Schritte
- Verstehen Sie jeden Callback-Typ? Siehe Abschnitt "Callbacks".
- Bereit zum Abrufen des Berichts? Siehe Abschnitt "Ausgabe: API-Endpunkt".
- Möchten Sie die Ergebnisse anzeigen? Siehe Abschnitt "Ausgabe: Benutzeroberfläche".