Integración nativa
Implementación de iOS
El método de implementación sugerido es crear una vista web con el código de inicialización antes de implementar la función o funciones de puente entre la vista web y el código nativo. El código de muestra se puede encontrar a continuación.
import UIKit
import SwiftUI
import PlaygroundSupport
import WebKit
class MyViewController : UIViewController, WKUIDelegate, WKScriptMessageHandler {
var webView: WKWebView!
var embed = """
<!DOCTYPE html>
<html>
<body>
<div id="img-arena-event-centre" style="height:400px;width:100%;"></div>
<script src="https://unpkg.com/@img-arena/front-row-seat@0.x/dist/index.umd.js"></script>
<script>
const { MessageTopics } = frontRowSeat.eventCentreUtils;
const eventCentreInstance = frontRowSeat.eventCentre({
operator: "operatorId",
sport: "ufc",
targetModule: "full",
eventId: "668",
version: "4.1.1",
targetElementSelector: "#img-arena-event-centre",
language: "en"
});
eventCentreInstance.on(MessageTopics.CONTEXT_UPDATE, function (msg) {
// send message to native controls
window.webkit.messageHandlers.contextUpdate.postMessage(msg);
});
</script>
</body>
</html>
"""
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webConfiguration.preferences.javaScriptEnabled = true
webConfiguration.userContentController.add(self, name: "contextUpdate")
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
let view = webView
self.view = view
}
override func viewDidLoad() {
super.viewDidLoad()
webView.loadHTMLString(embed, baseURL: nil)
}
func userContentController(_ userContentController:
WKUserContentController, didReceive message: WKScriptMessage) {
if (message.name == "contextUpdate") {
// handle update
print(message.body)
}
}
}
PlaygroundPage.current.liveView = MyViewController()
Last updated