混合開發

混合開發javascript

1、 UIWebView和JavaScript之間是怎麼交互的?html

UlWebView是i〇S SDK中渲染網面的控件,在顯示網頁的時候,咱們能夠hack網頁 而後顯示想顯示的內容。其中就要用至JavaScript的知識,而UlWebView與javascript交互的 方法就是 stringByEvaluatingJavaScriptFromString:前端

有了這個方法咱們能夠經過objc調用javascript,能夠注入javascript。java

UIWebView是iOS SDK中渲染網面的控件,在顯示網頁的時候,咱們能夠hack網頁 而後顯示想顯示的內容。其中就要用至JavaScript的知識,而UIWebView與javascript交互的 方法就是stringByEvaluatingJavaScriptFromString,有了這個方法咱們能夠經過objc調用 javascript,能夠注入 javascriptandroid

Js調用〇C方法原理就是利用UIWebView重定向請求,傳一些命令到咱們的 UIWebView,在UIWebView的delegate的方法中接收這些命令,並根據命令執行相應的objc 方法。這樣就至關於在javascript中調用objc的方法。ios

在android中,咱們有固有組件webview,通過設置可讓它支持咱們的js的渲染,然 後在代碼中設置(WebViewClient/WebChromeClient)讓應用跳轉頁面時在本webview中跳 轉,經過webview.loadurl (String str)方法能夠在須要的地方加載咱們前端的頁面或者調用 前端所定義的方法(wv.loadUrl("javascript:sendDataToAndroid('我是來自js的呦,你看到了 嗎')");),咱們再經過JavascriptInterface接口設置咱們前端和android通信的標識,git

wv.addJavascriptInterface(new MJavascriptInterface(getApplicationContext()), "WebViewFunc");web

這樣前端就能夠在頁面上調用咱們的方法了,funl方法是在android中定義的 Window.WebViewFunc.fun1 ();編程

總之,前端和android或者ios進行結合開發,咱們稱之爲混合開發,原理就是在原生 的開發語言中,咱們提供了一個組件webview,這個組件就是咱們的原生語言的瀏覽器,但 是咱們得自行設置讓其可以完美支持咱們的應用,須要設置對應的標識,而後鏈接起來,我 們稱之爲 JavascriptInterfac。api

2、 混合開發橋接api是怎麼調用的,須要引入類庫嘛? 調用的對象是什麼?

Hybrid框架結構

HyBrid App = H5 App + Native 框架

H5App用來實現功能邏輯和頁面渲染 Native框架提供WebView和設備接口供H5調用

方案一重混合應用,在開發原生應用的基礎上,嵌入WebView可是總體的架構使用 原生應用提供,通常這樣的開發由Native開發人員和Web前端開發人員組成。Native開發人

 

員會寫好基本的架構以及API讓Web開發人員開發界面以及大部分的渲染。保證到交互設 計,以及開發都有一個比較折中的效果出來,優化得好也會有很棒的效果。

Hybrid App技術發展的早期,Web的運行性能成爲主要瓶頸!

爲解決性能問題Hybrid App走向‘‘重混」。

經過多WebView:實現流暢的多頁加載和專場動畫。

使用Navtive UI組件:框架、菜單、日期等。

‘‘重混」的優缺點 優勢:

一提高了運行性能 一加強了交互體驗

缺點一

一Web和Native技術交叉混雜 一須要同時掌握Web和Native技術,學習難度增長 一一個頁面有Web組件也有Native組件,編程調試困難

須要引入各自須要的各類依賴工具

方案二:輕混合應用,使用PhoneGap、AppCan之類的中間件,以WebView做爲用 戶界面層,以Javascript做爲基本邏輯,以及和中間件通信,再由中間件訪問底層API的方 式,進行應用開發。這種架構通常會很是依賴WebView層的性能。

隨着時代的發展,手機硬件、瀏覽器技術、無線網絡技術都獲得了大幅的提高,H5已經可 以支持複雜應用,並擁有良好的運行性能。使用輕混方案的App也愈來愈多。

目前咱們要學習的Hybrid App開發就是方案二,使用H5+Js+Native框架開發當前輕 混合應用。

Phonegap 引入phonegap.js 或者 cordova.js,對象爲 navigator Dcloud引入引入mui.js或者其餘的js組件,對象爲plus apiloud引入各類第三方插件,對象爲api

順變提一下,2012年8月,微信公衆平臺的上線,從新定義了移動應用:移動應用 =Iphone App + Android App + 微信 App

3、 說一下你對支付,推送(遠程,本地)的理解

消息的推送主要有兩種:

一種是本地推送,主要應用在系統的工具中,例如:鬧鐘,生日提醒等;實現本地推 送須要如下三個步驟,

  1. 實例化一個本地推送對象
  2. 設置通知對象的各個屬性
  3. 添加本地推送對象

一種是遠程消息推送,主要應用聯網設備的信息推送,例如:郵件,各類軟件的廣告 或優惠信息的推送。遠程推送比較複雜,須要使用開發者帳號進行申請證書,得到實

現推送功能的配置文件,因此想要實現遠程推送功能,必需要有開發者帳號而且生成 配置文件

  1. 完成證書的申請和Xcode的配置
  2. 在Demo中註冊遠程服務對象,並設置其代理
  3. 找一個簡單的App服務器進行消息推送(推薦使用:PushMeBaby, gitup網站上就有)
  4. 運行 PushMeBaby

參考網址:http://blog.csdn.net/u014642572/article/details/26857717

遠程推送流程圖以下

 

 4、 什麼是代理和通知,寫一下他們基本的實現方式

代理:「一對一」,對同一個協議,一個對象只能設置一個代理delegate

六個步驟:

1.聲明一個協議,定義代理方法

2.遵循協議

3.設置一個代理對象

4.調用代理方法

5.給代理賦值

6.實現代理方法

注意事項:

1.單例對象不能用代理;

2.代理執行協議方法時要使用respondsToSelector檢查其代理是否符合

3.協議(檢查對象可否響應指定的消息),以免代理在回調時由於沒有實現方法而形成程序崩潰

使用場景:

公共接口,方法較多也選擇用delegate進行解耦 iOS最經常使用tableViewDelegate, textViewDelegate iOS有不少例子好比經常使用的網絡庫AFNetwork,ASIHTTP庫, UlAlertView 類。

 通知:一對一 一對多 傳值

四個步驟:

1.發送通知

2.建立監聽者

3.接收通知

4.移除監聽者

使用場景:

1一不少控制器都須要知道一個事件,應該用通知;

2 一相隔多層的兩個控制器之間跳轉

注意事項:

1.一旦接收消息的對象多了,就難以控制了,可能有你不但願的對象接收了消息並作了處理

2.建立了觀察者,在dealloc裏面必定要移除;

 Block :  Block是i〇S4.0+和Mac OS X 10.6+引進的對C語言的擴展,用來實現匿名函數的特性。Blocks語法塊代碼以閉包得形式將各類內容進行傳遞,能夠是代碼,能夠是數組 無所不能。閉包就是可以讀取其它函數內部變量的函數。就是在一段請求連續代碼中能夠看 到調用參數(如發送請求)和響應結果。因此採用Block技術可以抽象出不少共用函數,提 高了代碼的可讀性,可維護性,封裝性。

使用場景:

—: 動畫

二:數據請求回調

三:枚舉回調

四:多線程gcd

注意事項:Iblock須要注意防止循環引用

參考網址:http://www.cnblogs.com/wenboliu/articles/5422033.html

5、 UIViewController 的生命週期

1.經過alloc init分配內存,初始化controller.

2.loadView (loadView方法默認實現[super loadView]

若是在初始化controller吋指定了xib文件名,就會根據傳入的xib文件名加載對應的xib文件,若是 沒傳xib文件名,默認會加載跟controller同名的xib文件,若是沒找到相關聯的xib文件,就會建立一個空白的UIView,而後賦給controller的view)

3.viewDidLoad (當loadView建立完view以後,此吋view已經完成加載了,會調用 viewDidLoad方法;通常我會在這裏作界面上的初始化操做,好比添加按鈕,子視圖,等等.)

4.viewWillAppear (當view在load完以後,將要顯示在屏幕以前會調用這個方法,在重寫這些方法吋候最好先調用一下系統的方法以後在作操做。)

5.viewDidAppear (當view已經在屏幕上顯示出來以後,會調用這個方法,當一個視圖被移除屏幕而且銷燬的吋候)

6.viewWillDisappear (當視圖將要從屏幕上移除吋候調用 )

7.viewDidDisappear (當視圖已經從屏幕上移除吋候調用 )

8.Dealloc (view被銷燬吋候調用,若是是手動管理內存的話,須要釋放掉以前在init和 viewDidLoad中分配的內存(相似alloc,new,copy) ; dealloc方法不能甶咱們主動調用,必須等引用計數爲0吋候甶系統調用.)

9.參考網址: http://www.cnblogs.eom/wujy/p/5822329.html

1、 如何調用原生的接口?

首先你得選擇一個合適的框架做爲本身的基礎,以Dcloud爲例,頁面中必定要存在一個事件,plusready, plusready其實是原生將橋接js注入到頁面中的容器,進行任何方法 調用的時候都在plusready以後。全部api方法所有都託管在了一個plus對象中。使用語法 plus.模塊名稱.具體方法(參數,callback)

當咱們須要打開系統相冊的時候,能夠這樣作:

Gallery模塊管理系統相冊,支持從相冊中選擇圖片或視頻文件、保存圖片或視頻文 件到相冊等功能。經過plus.gallery獲取相冊管理對象。打開相冊plus.gallery.pick進行打開,選取多個圖片{multiple:true,maximum:9,system:false}

2、 微信支付怎麼作?說說流程

1.申請微信公衆號及支付功能申請:根據公衆號申請流程申請便可。

2.獲取商戶支付配置信息及支付測試配置:

支付受權目錄最多能夠配置三個域名,測試受權目錄只能夠一個,這裏須要 注意的是域名大小寫必需要網站URL—致,不然會沒法經過受權,提示支付請求的 URL不合法。另外,測試支付的微信號必須加到測試白名單,不然沒法進行支付測 試。

3.H5頁面發起支付請求,請求生成支付訂單,獲取用戶受權(獲取用戶的openid)

4.調用統一下單API,生成預付單

5.生成JSAPI頁面調用的支付參數並簽名,注意時間戳timeStamp是32位字符串

6.返回支付參數prepay—id,paySign參數的html文本給前端。

7.微信瀏覽器自動調起支付JSAPI接口支付,提示用戶輸入密碼。

8.確認支付,輸入密碼,提交支付。

9.步通知商戶支付結果,商戶收到通知返回確認信息。

10.返回支付結果,併發微信消息提示。

11.展現支付信息給用戶,跳轉到支付結果頁面。

3、 混合開發的注意點

加強WebView : 原生WebView基本是PC平臺瀏覽器內核的移植,但對於移動場景並不徹底適合,各類硬件API得不到HTML5原生支持。所以對於WebView的種種Hack、加強應運而生,甚至出現了基於加強WebView提供第三方服務的。

路由:應用內跳轉因爲加入了 WebView而變得複雜起來,同時因爲組件化、模塊化帶來的問 題,路由也成爲人們討論的重點。

緩存:移動網絡條件差,爲了用戶體驗,必需要作資源緩存和預加載。

通訊:即HTML5和Native之間的通訊。利用系統提供的橋接API能夠實現,不過在應用上還 有着一些坑點和安全問題。

4、 說說你對手機平臺的安裝包後綴的理解

Android:**apk

Ios:**ipa

Windows:  wp7 wp8的是xap  wp8.1之後用8.1開發的是appx

相關文章
相關標籤/搜索