2015-06-16 17 views
5

wiem jak wysłać wiadomość z JS do rodzimej IOS szybkiej aplikacji:JS wywołanie funkcji w Swift

func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) { 

     println("JavaScript is sending a message \(message.body)") 

} 

i JS:

webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript"); 

moje pytanie: Czy jest możliwe, aby bezpośrednio wywołać funkcja w rodzimej aplikacji zamiast odbierania wiadomości w moim przykładowym kodzie.

mówić chcę w JS użyć czegoś takiego:

webkit.messageHandlers.someFunctionName() 

powód ja pytam jest to, że Android to jak to działa

+0

masz adres URL, którego używasz, prawda? wywołać js z aplikacji ios? –

Odpowiedz

0

Można spróbować użyć url parameters, jak chcesz podłączyć do PHP przy użyciu Swift

Oto przykład, w jaki sposób uzyskać parametry uRL w javascript: Get url parameter jquery Or How to Get Query String Values In js

Następnie po uruchomieniu skrypt można sprawdzić, w czeku co url parameters są, a następnie uruchomić funkcję na podstawie tego

jak ten url to przykład.pl używamy parametru command, aby powiedzieć, co funkcja uruchomić

example.com?command=foo 

wtedy powinniśmy mieć cos takiego jak to w javascript

if(command='foo'){ 
    //run function 
    runFoo(); 
} 

n można także użyć parametrów URL, aby ustawić parametry do funkcji

Jeśli zdecydujesz PHP

jeśli zdecydujesz się korzystać z PHP, to samo można zrobić z $_GET['command'];

3

WKWebView obsługuje tylko nieprzetworzony interfejs przesyłania komunikatów. Trzeba go zawijać dla złożonych interakcji między JS i natywnym.

Utworzono projekt o nazwie XWebView, który oferuje interfejs API w stylu języka oparta na przekazywaniu nieprzetworzonej wiadomości WKWebView. Jest napisane w Swift.

Na przykład, można napisać wtyczki w Swift:

class Plugin : NSObject { 
    func someFunctionName() { 
     doSomeThing() 
    } 
} 

Expose instancji wtyczki do JavaScript przed załadunku HTML:

let webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration()) 
webView.loadPlugin(Plugin(), namespace: "foo") 

wywołania funkcji z JavaScript:

window.foo.someFunctionName() 

To naprawdę proste i proste. Aby uzyskać więcej informacji, sprawdź stronę projektu.