2016-07-28 14 views
0

Ich baue gerade eine Android- und iOS-App mit Appcelerator/Titanium.Soll ich ein WebView verwenden?

Die App ist geradlinig genug - unsere API gibt eine JSON-Antwort der neuesten Geschichten, der Geschichten und in einer Liste angezeigt und wenn ein Benutzer wählt eine Geschichte wird dies gerendert.

Bis jetzt habe ich Phonegap für unsere Apps verwendet, so dass es einfach war, einfach den HTML-Code in der JSON-Antwort auszugeben und alles hat funktioniert.

Jetzt bin ich nach Appcelerator wegen einiger Einschränkungen, die ich mit Phonegap und der Tatsache, dass es wirklich nur ein schicker WebView aufgetreten ist, gezogen. Allerdings kann ich keinen besseren Weg sehen, um einen Storys-Inhalt anzuzeigen als in einem WebView.

Zum Beispiel gibt die API den gesamten Story-Inhalt als HTML zurück und kann so ziemlich jedes HTML-Tag <p>,<strong><img src=""/><a href="">links</a><script></script><iframe></iframe> enthalten, da wir dazu neigen, Facebook, Twitter, Links, Videos, Graphen, Iframes und Inline-Javascript und CSS einzubetten.

Aber es scheint fast wie ein Schritt zurück zu mir, WebViews wieder zu verwenden, aber im Moment scheint es viel praktischer als zu versuchen, die HTML zu analysieren und extrahieren Elemente, die meisten als native Komponenten gerendert werden von denen wahrscheinlich cant (eingebettete tweets/facebook)

Ich weiß appcelerator können Sie HTML auf die native label Komponente, aber dies nur Android und umfasst nicht JS oder CSS. Für iOS habe ich AttributedStrings angeschaut, aber auch diese sind in der Unterstützung begrenzt.

Ich denke, ich bin nur auf der Suche nach der Bestätigung, dass dies der richtige Weg ist, dies zu tun. Ich habe viel gelesen, dass das Rendering der WebView-Komponenten die Leistung ziemlich beeinträchtigt, deshalb bin ich so zögerlich.

Mein anderes Dilemma ist, dass ich kämpfen, um alle Klicks in der WebView zu erfassen. Klickt ein Nutzer zum Beispiel auf einen eingebetteten Tweet, so wird die App sofort zu einem Vollbild-WebView von Twitter, wenn es eigentlich im externen Browser geöffnet werden soll (ein Grund, warum ich von Phonegap wegziehen möchte). Appcelerator lässt Sie communicate via JavaScript mit solchen Dingen umgehen, aber es funktioniert nicht für Dinge wie eingebettete Tweets, da sie in iFrames sind. Sicherlich gibt es einen Weg, dies zu tun, es gibt unzählige andere Apps, die das erreicht haben, was ich tun möchte. Ich habe einfach das Gefühl, etwas Offensichtliches zu vermissen!

Antwort

0

Ich denke, das Problem der Webansicht Komponente gelöst werden kann, aber einige Einschränkungen zu berücksichtigen:

  • Wenn Sie Ereignisse in der Webansicht zu erfassen, ist es nicht entfernt sein kann (http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.WebView). Sie können eine lokale Vorlage in Ihrer Anwendung verwenden und den Inhalt mithilfe eines API-Diensts abrufen und die Webansicht als lokalen Inhalt darstellen. Auf diese Weise können Sie Ereignisse wie Klicks erfassen.
  • Es gibt einige Einschränkungen beim Einbetten von Inhalten von Drittanbietern wie Twitter, Facebook. Sie müssen einige "Hacks" für eingebettete Inhalte durchführen.
+0

Dank @juanblo, haben Sie weitere Informationen zu diesen "Hacks" zum Einbetten von Inhalten Dritter? Ich finde es merkwürdig, wie ich keine Informationen darüber finden kann, aber es gibt unzählige Apps, die ich gemacht habe, die genau das tun, was ich tun möchte – robobobobo