[英]Suggestions for how to communicate from JS running in a UIWebView to the hosting obj-c app?
我計划有一個帶有uiwebview的shell iphone應用程序,我的應用程序的大部分都在uiwebview中通過javascript運行。
現在我知道通過使用stringByEvaluatingJavaScriptFromString從obj-c環境到javascript環境的通信很容易,但是有一個很好的推薦方式從javascript環境到obj-c世界進行通信嗎?
謝謝
我總是使用應用程序“導航”到特殊URL的方法:
window.location = "myapp://somemessage/someargument";
應用程序在以下功能中捕獲此內容:
-(BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ( [[url scheme] isEqualToString:@"myapp"] )
{
[self handleJSEvent:url];
return NO;
}
return YES;
}
此外,根據您的需要,您可以使用您使用JSON.stringify(events)
獲取的某種事件隊列,以響應使用上述方法發送到應用程序的消息。 對於從app到js的通信,JSON也非常合適。
如果有標准或標准的方法來做到這一點,我顯然錯過了它。
在UIWebView中調用javascript有一個非常好的方法:
[webView stringByEvaluatingJavaScriptFromString:@"yourJSFunction('some_data');"];
如MVDS通過Url所述,最好完成回撥:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
我剛剛使用mvds和Ondrej描述的方法創建了一個為您提供便利的庫。 包括雙向通信,jQuery事件樣式,帶有多個偵聽器的可選JSON有效負載。 看看: https : //github.com/tcoulter/jockeyjs
也許通過更改url哈希?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.