• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Aus Website Native App basteln

iMouze

Granny Smith
Registriert
30.06.10
Beiträge
12
Hi,

erstmal hoffe ich, dass es das richtige Unterforum ist. Wenn nicht einfach verschieben. ;-)

Folgendes: Ich habe eine x-beliebige Website aus der ich mir eine Native App basteln möchte. Das App sieht so aus, dass ich einfach per Javascript auf die Seite verweise. Nun hab ich natürlich das Problem, dass sich die Seite im Safari samt Browserbar etc. öffnet. Das möchte ich allerdings nicht, weil ich ja den typischen iPhone App Stil erzielen möchte. Das heißt die Seite soll sich im Full Screen Mode öffnen. Nun habe ich es schon mit folgendem Code probiert:
Code:
<html>
<head>
<title>Test</title>

<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="default"/>

<script type="text/javascript">
setTimeout("self.location.href='http://test.de/'",0);
</script>

</head>
    <body></body>
</html>
Ich habe die beiden Abschnitte
Code:
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="default"/>
auch schon in die HTML Datei der Website mit eingebaut. Tut sich aber auch nicht. Kann mir einer helfen wie ich es verhindern kann, dass beim klicken auf die App die gesamte Safari Navi angezeigt wird?
 
Warum machst Du das über Javascript? Du könntest doch einfach loadRequest: von UIWebView benutzen.

MacApple
 
Genau, UIWebView benutzen, delegate vom UIWebView auf deinen AppDelegate oder deinen ViewController setzen. UIWebViewDelegate: didFinishLoad implementieren und dort die für die WebView sizeToFit aufrufen. Dann wird es ganz sauber. Da es aber immer etwas dauert, bis eine Webseite (auch lokal) geladen wird und sich die Seite quasi aufbaut, sieht das nicht wirklich cool aus. Deswegen habe hinter der Webview einen UIActivityIndicator und in UIWebViewDelegate: didStartLoad setze ich den alpha von der Webview auf 0 und in didFinishLoad animiere ich den alpha wieder auf 1. Damit hat man ganz schöne fließende Übergänge und es sieht nicht aus, wie ein Browser.

Alternativ baust du dir eine UIViewController-Subclass, fügst in der init-Methode die UIWebView hinzu und lädst dort auch gleich den Content dafür.
Das machst du für jede Seite beim Programmstart und dann addest du einfach alle Controller in einen UINavigationController. Somit hast du keine Ladezeiten und kannst iOS-stylisch navigieren.
 
Warum machst Du das über Javascript? Du könntest doch einfach loadRequest: von UIWebView benutzen.

MacApple

UIWebView...hm, ich wurde aus meiner kurzen Google Suche nicht wirklich schlau daraus was das eigentlich genau macht.
Nochmal genaueres zum Problem: Ich habe bereits eine komplett fertige Seite und möchte nicht extra mit Objectiv C eine App daraus basteln. Ich hätte einfach gerne eine einfache Funktion, die mir die Seite im Fullscreen Mode aufruft und das möglichst so, dass ich um Objectiv C herumkomme. Um die App zu erstellen gibts es ja dann verschiedene Methoden um aus der Web App eine Native zu machen (z.b. phonegap).
 
Es muss doch noch eine andere Möglichkeit geben als Objective C. Nochmal, ich möchte das hier nicht benutzen. Das ganze soll dann so aussehen als wenn ihr eine Seite als Bookmark auf euren Home Screen speichert. Gibt es da wirklich keine anderen Lösungsansätze?
 
Dann solltest du vielleicht die phoneGap-Doku konsultieren. Bau deine HTML-Seiten doch einfach mal in eine phoneGap-App ein und schau was passiert.
 
Dann solltest du vielleicht die phoneGap-Doku konsultieren. Bau deine HTML-Seiten doch einfach mal in eine phoneGap-App ein und schau was passiert.
Letzteres habe ich ja bereits getan. Wenn ich die HTML, CSS und JS Daten in den phonegap Folder lege, dann funktioniert es ohne Probleme. Wenn ich allerdings nur die JS Funktion mit dem Verweis auf die Seite reinnehme, dann wird es wieder ganz normal im Safari samt Browserbar gestartet. Und genau das will ich verhindern. Denn sobald sich auf der Seite etwas verändert müsste ich jedesmal eine neue Version herausbringen. Das möchte ich gerne so umgehen.
 
Ja, verstehe ich. Wenn du den Content lokal in der App ablegst, funktioniert es. Du möchtest aber, daß die App den Content stets aktuell aus dem Web lädt. Versuch doch mal, in die phoneGap-App einfach eine HTML-Datei zu legen mit einem Redirection-Header auf deinen Webspace. Vielleicht funktioniert das ja so.

Wenn es nicht funktioniert, fällt mir nichts mehr ein. Bis auf, was wir schon hatten, die UIWebView, die für sowas wirklich prädestiniert ist. Man müßte nur vielleicht 5 Zeilen Objective-C Code schreiben und im Interface-Builder den ViewController zusammenklicken. Das ist wirklich keine Raketenwissenschaft und es gibt super viele Tutorials dafür.
 
Alles klar. Ich werde mir morgen mal die UIWebView genauer ansehen. Vielen Dank für die Antworten. :-)