Objective-C與JavaScript互動的那些事

來源:互聯網
上載者:User

標籤:port   lock   基於   asc   core   idg   一點   val      

http://www.cocoachina.com/ios/20160127/15105.html

最近公司的運營瞎搞了個活動,其活動要服務端提供資料支援,web前端在公眾帳號內作為主要的運營陣地,而iOS、Android要提供相應的入口及頁面進行配合。一個活動,動用了各個端的程式猿。而在這裡面技術方面主要就是涉及到web端和服務端的互動,web前端和iOS、Android的互動。本人作為一個iOS開發人員,今天就聊聊web、iOS、Android三端的互動,其實在說明白一點就是方法的互相調用而已。這裡主要講解iOS。Android會稍微提一下,僅作參考。

此篇文章的邏輯圖

圖0-0 此篇文章的邏輯圖

概述

iOS原生應用和web頁面的互動大致上有這幾種方法iOS7之後的JavaScriptCore、攔截協議、第三方架構WebViewJavaScriptBridge、iOS8之後的WKWebView在這裡主要講解JavaScriptCore和攔截協議這兩種辦法。WebViewJavaScriptBridge是基於攔截協議進行的封裝。學習成本相對JavaScriptCore較高,使用也不如JavaScriptCore方便本文不做敘述。WKWebView是iOS8之後推出的,還沒有成為主流使用,所以本篇文章也不做詳細敘述。

 

iOS

iOS這邊根據前端定義的方法名來寫代碼,但是有些時候web前端會讓我們定義,但是我們定義好之後他又要修改,這時候就會很煩啊。所以碰到三端互動的時候最好就是讓web前端去定義方法名,iOS和Android根據web前端定義好的去寫代碼。JavaScriptCore中web頁面調用原生應用的方法可以用Delegate或Block兩種方法,此文以按Delegate講解。

JavaScriptCore中類及協議:

  • JSContext:給JavaScript提供啟動並執行上下文環境

  • JSValue:JavaScript和Objective-C資料和方法的橋樑

  • JSManagedValue:管理資料和方法的類

  • JSVirtualMachine:處理線程相關,使用較少

  • JSExport:這是一個協議,如果採用協議的方法互動,自己定義的協議必須遵守此協議

Objective-C與JavaScript互動的那些事

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.