2015-06-16 21 views
5

so come inviare un messaggio da JS per nativo IOS rapida app:JS chiamare una funzione a Swift

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

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

} 

e JS:

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

La mia domanda: è possibile chiamare direttamente un funzione nell'app nativa piuttosto che ricevere il messaggio nel mio codice di esempio.

dire che voglio nella JS usare qualcosa come:

webkit.messageHandlers.someFunctionName() 

Il motivo che chiedo è che in Android questo è come funziona

+0

hai un URL che usi giusto? chiamare il js dall'app ios? –

risposta

0

Si potrebbe provare a utilizzare il url parameters, come si farebbe la connessione a PHP utilizzando rapida

Ecco un esempio di come ottenere i parametri URL in JavaScript: Get url parameter jquery Or How to Get Query String Values In js

Poi, quando si esegue il codice JavaScript è possibile controllare, nel controllo di ciò che il url parameters sono e quindi eseguire una funzione basata su quella

come questo l'url è example.com usiamo il parametro command, di dire ciò che la funzione di eseguire

example.com?command=foo 

allora dovremmo avere someting come questo in javascript

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

il n è possibile utilizzare anche i parametri URL per impostare i parametri nella funzione

Se si sceglie PHP

se si sceglie di usare php, questa è la stessa cosa che si può fare con $_GET['command'];

3

WKWebView supporta solo l'interfaccia di passaggio dei messaggi non elaborati. Devi avvolgerlo per complesse interazioni tra JS e nativo.

Ho creato un progetto denominato XWebView che offre API con linguaggio vincolante in base al passaggio del messaggio non elaborato di WKWebView. È scritto in Swift.

Ad esempio, è possibile scrivere un plugin a Swift:

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

esporre un istanza del plugin per JavaScript prima del caricamento HTML:

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

Chiamare la funzione da JavaScript:

window.foo.someFunctionName() 

È davvero facile e diretto. Per maggiori dettagli, si prega di controllare la pagina del progetto.

Problemi correlati