2016-07-28 116 views
0

我目前正在使用Appcelerator/Titanium構建Android和iOS移動應用程序。我應該使用WebView嗎?

該應用程序足夠簡單 - 我們的API返回最新故事,故事的JSON響應並顯示在列表中,以及用戶選擇呈現故事的時間。

到目前爲止,我一直在爲我們的應用程序使用Phonegap,所以它簡單地輸出HTML中的JSON響應並且一切正常。

由於我在Phonegap遇到的一些限制以及它實際上只是一個花哨的WebView,現在我已經轉移到Appcelerator。不過,我再也看不到任何更好的顯示故事內容的方式。

例如,API將完整的故事內容作爲HTML返回,並且可以包含幾乎任何HTML標籤<p>,<strong><img src=""/><a href="">links</a><script></script><iframe></iframe>,因爲我們傾向於嵌入Facebook,Twitter帖子,鏈接,視頻,圖形,iframe和內聯javascript和CSS。

但是,對於我來說,再次使用WebViews似乎倒退了一步,但目前它似乎比嘗試解析HTML並提取可以呈現爲本地組件的元素更實用,其中可能不足(嵌入式推文/臉譜)

我知道appcelerator允許您設置HTML爲本機label組件,但這隻支持Android,不包括JS或CSS。對於iOS,我已經看過AttributedStrings,但這些支持有限。

我想我只是尋找一些再保證,這是做到這一點的正確方法。我已經閱讀了很多,渲染WebView組件會影響性能很多,所以這就是爲什麼我很猶豫。

我的另一個困惑是,我正在努力捕獲WebView中的所有點擊。例如,如果用戶點擊嵌入式推文,那麼應用程序立即變成全屏WebView的嘰嘰喳喳,當它真的應該在外部瀏覽器中打開(我想從Phonegap移動的原因)。 Appcelerator確實讓communicate via JavaScript能夠處理這樣的事情,但它不適用於嵌入式推文,因爲它們位於iFrame中。當然有一種方法可以做到這一點,還有無數其他應用程序已經實現了我想要做的事情,我只是覺得我錯過了一些明顯的東西!

回答

0

我認爲你的問題可以用web視圖組件,但考慮到一些限制來解決:

  • 如果你想要捕捉的網頁視圖內的事件,它不可能是遠程(http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.WebView)。您可以在應用程序中使用本地模板,並使用API​​服務檢索內容,並將webview呈現爲本地內容,這樣您就可以捕獲點擊等事件。
  • 嵌入第三方內容(如twitter,facebook)存在一些限制。您必須對嵌入的內容進行一些「黑客」才能正常工作。
+0

謝謝@juanblo,你有關於嵌入第三方內容的這些「黑客」的更多信息?我發現它很奇怪,我怎麼也找不到關於它的信息,但是我見過無數的應用程序,它們正在做我想做的事情 – robobobobo