[英]iOS Calling Objective-C from Javascript: Some calls are ignored?
[英]Calling an Objective-C function from JavaScript hosted on some web page
我有一個帶有Web瀏覽器的IOS應用程序。
顯示該Web瀏覽器時,它將導航到Internet上的頁面,例如http://myexample.com/myiosapp 。
是否可以在此網站上放置一個javascript代碼,將其下載到電話后與本機應用程序通信? 它可以調用Objective-C方法,還是向該應用程序的存儲空間寫入內容?
防爆。 托管在myexample.com/myios應用上的代碼:
function saveSomeString() {
xcode.Save("somestring");
}
應該調用一個名為Save的Objective-C函數,它將傳入的字符串參數保存到本地存儲中。
是的,可以,但是有點黑。
在Objective-C方面:
基本上,在UIWebView中,您將使用方法shouldStartLoadWithRequest(來自UIWebViewDelegate),該方法應在URL請求開始之前被調用:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在Javascript方面:
您的JavaScript代碼將導航到“假” URL,您將根據上述方法進行過濾。 就像是:
window.location = "js2objc://save:param";
回到Objective-C方面:
在我前面提到的方法內,您尋找關鍵字js2objc(或選擇的任何一個),然后提取信息並采取任何適當的操作:
if([[url scheme] isEqualToString:@"js2objc"]){
// extract the parameters and save them, o do whatever action you need
return NO; // so the UIWebView doesn't actually follow the url
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.