Ich verwende die WKWebView
Komponente in meiner Mac App, um eine Webseite anzuzeigen. Diese Webseite Daten an den native App sendet JavaScript-Aufruf webkit.messageHandlers["callbackHandlerName"].postMessage(dataObject);
WKScriptMessage.body verursacht EXC_BAD_ACCESS
kann ich die meisten Nachrichten in meiner native App ohne Probleme (und dann verwandeln ihren Körper zu NSDictionary
) erhalten, aber einige Arten von Nachrichten bewirkt, dass die EXC_BAD_ACCESS
, wenn ich versuche, Zugriff auf Eigenschaft message.body
. Ich kann nicht herausfinden, warum manche Daten nicht auf die native App und andere können gesendet werden (in beiden Fällen Daten JavaScript-Objekte verschachtelt sind)
internal func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
{
switch (message.name)
{
case "nativeCallbackA":
onNativeCallbackA(message.body)
case "nativeCallbackB":
onNativeCallbackB(message.body) //throws EXC_BAD_ACCESS
default:
print("Unsupported message " + message.name);
}
}
Gebe es Einschränkungen für Nachrichten an der native App geleitet, um die JS mit postMessage
anrufen?
kann es sein, dass einige Ihrer Nachrichten keinen 'body' haben 'vielleicht? Könntest du überprüfen, ob "Körper" gleich Null war, bevor du versuchst, etwas damit zu tun? – pbodsk
Ich kann es nicht überprüfen, weil "Wert des Typs 'AnyObject' niemals Null sein kann". Außerdem hat mein nativeCallbackB einen leeren Körper –