Ist es klug, den gleichen Code-Basis für unsere mobile Web-App und phonegap App zu nutzen? Sie sollen ähnlich sein, die Phonegap-Version lässt uns einfach mehr tun. Können wir erkennen, ob es nennt ist nicht auf die phonegap api auf phonegap und Sequester laufen oder macht es mehr Sinn machen, sie zu trennen.Verwenden der gleichen Codebasis für Phonegap und Web?
Antwort
würde ich die gleiche Code-Basis verwenden. Der ganze Sinn von PhoneGap besteht darin, Ihre mobilen Websites in Apps umzuwandeln. Es ist nicht so schwierig, Merkmale und Bildschirmeigenschaften als angemessen zu erkennen. Das Problem mit separaten Codebasen ist normalerweise die doppelte Handhabung Ihrer Inhalte und Stile. Bei Bedarf könnten Sie diese in eine gemeinsame Ressource aufteilen und sie zur Laufzeit/Zugriff bündeln, aber persönlich würde ich immer noch alles zusammen behalten.
Dieser Blog deckt die Erkennung Ausgabe (die Kommentare siehe auch): http://bennolan.com/2011/08/22/phonegap-detection.html. Die Crux es aber ist if (window.PhoneGap){...}
Danke für den Link – fancy
Sicher, können Sie die meisten der gleichen Codebasis verwenden. Einige phonegap APIs sind die gleichen in html5 (zum Beispiel local), so gibt es keinen Unterschied im Code gibt.
Wenn Sie phonegap Build Service verwenden, wird es die phonegap.js/cordova.js Skriptdatei zu Ihrem Projekt-Stamm hinzuzufügen. Fügen Sie es einfach immer in Ihrem HTML ein. Dann können Sie erkennen, ob Ihre Anwendung innerhalb phonegap ausgeführt wird:
var isPhonegap = function() {
return (typeof(cordova) !== 'undefined' || typeof(phonegap) !== 'undefined');
}
if (isPhonegap()) {
// phonegap.js/cordova.js exists.. now let's handle the onDeviceReady event
} else {
// in-browser
}
Wenn Sie einigen gemeinsamen Startcode benötigen, setzen Sie es in einer Funktion und rufen Sie diese Funktion aus dem onDeviceReady Handler und dem sonst über Block.
Wenn der phonegap api, den Sie anrufen, nicht den gleichen Namen wie html5 hat (weil er das Präfix Moz * oder WebKit * hat), dann wickeln Sie beide in einen neuen Namen. Zum Beispiel:
var requestFileSystem = (isPhonegap() ? requestFileSystem : window.WebKitRequestFileSystem);
Wenn die phonegap API Sie verwenden wirklich keine html5 Äquivalent hat, versuchen, die Funktionalität selbst in Javascript, wenn möglich, zu vervielfältigen, sonst werden Sie nur die Funktionalität in Ihrem Browser verlieren. Aber stellen Sie sicher, dass es ohne diese Funktion ausreichend reduziert wird.
Hinweis: die mobilen Geräte zu testen Funktionen wie Beschleunigungsmesser, Geolocation, etc .. in Ihrem Browser Kasse der Ripple Chrome extension.
sehr nützlich, nur ein Kommentar: in Zeile 5 gibt es einen Fehler ist nicht " iPhonegap "es muss sein" isPhonegap ". Vielen Dank! –
behoben, danke :) – chrisben
ich einen Weg, um die Web-Code-Basis intakt zu halten herausgefunden ...
Das aktuelle Problem in deviceready Fall die eingebaute mit verwendet wird, ist, dass, wenn die Seite geladen wird, Sie haben keine Möglichkeit, die App zu sagen: "Hey, das läuft NICHT auf einem mobilen Gerät, man muss nicht warten, bis das Gerät startbereit ist".
Im nativen Teil des Codes, zum Beispiel für iOS, in MainViewController.m gibt es eine Methode viewDidLoad, ich bin einen Javascript-Variable senden, die ich später in dem Web-Code überprüfen, ob diese Variable um ist ich werde warten, um den Code für meine Seite zu starten, bis alles fertig ist (zB Navigator Geolocation)
Unter MainViewController.m:
- (void) viewDidLoad { [super viewDidLoad]; NSString* jsString = [NSString stringWithFormat:@"isAppNative = true;"]; [self.webView stringByEvaluatingJavaScriptFromString:jsString]; }
Index.html der Code wie folgt lautet:
function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady(){; myApp.run(); } try{ if(isAppNative!=undefined); }catch(err){ $(document).ready(function(){ myApp.run(); }); }
- 1. Verwalten mehrerer Webanwendungen mit der gleichen Codebasis
- 2. Der beste Weg, einzelne Codebasis für mehrere Websites zu verwenden
- 3. Kann ich sowohl ES6 als auch ES5 in der gleichen Codebasis verwenden?
- 4. Gemeinsame Codebasis für C# .NET und Xamarin Mobile Apps?
- 5. Verwenden der gleichen Datei für Stdin und Stdout mit Umleitung
- 6. Verschiedene Branding für die gleiche Codebasis
- 7. Web und Windows Forms Anwendung mit der gleichen DB-Probleme
- 8. Verwenden von ASP.NET Web Forms und MVC-Anwendungen innerhalb der gleichen Lösung
- 9. Phonegap und WebWorker
- 10. Werkzeuge zum Analysieren der C++ - Codebasis
- 11. Pfad Probleme Portierung Web-App zu Phonegap
- 12. Verwenden einzigen Feder Anwendungskontext für Web-App
- 13. Wie PDF-Datei mit in der gleichen App in phonegap
- 14. erstellen Web-App und mobile app mit gleichen MySQL DB auf dem Webserver
- 15. getUserMedia() Shim für PhoneGap/Cordova?
- 16. Ist PhoneGap nur für NativeApplications oder für HTML-Seiten der Remote-Web-App verfügbar?
- 17. Verwenden von Spark und Python in der gleichen IDE
- 18. Verwenden der gleichen Komponente für verschiedene Routen mit React Router
- 19. PhoneGap und WhatsApp
- 20. Verwenden der Formularauthentifizierung mit der Web-API
- 21. Verwenden des gleichen InfoWindow für zwei AttributeInspectors
- 22. Verwendung von Web-Mitarbeitern in Phonegap
- 23. Verwenden der gleichen Datenbank in mehreren Projekten
- 24. Phonegap und das Universum der Frameworks?
- 25. Pull zum Aktualisieren für Android und Phonegap
- 26. Verwenden Sie Browserify und RequireJS auf der gleichen Seite?
- 27. Code-Review-Tool für Prep für große Änderung zu Codebasis
- 28. Force MSBuild 14.0 in PSA Build für C# 6.0 Codebasis
- 29. Verwenden der Apple-Meta-Tag für Vollbild-Web-App
- 30. PhoneGap iOS 7 und localStorage
Sie früher oder später gebunden werden in den Wartungs Hölle laufen, schlage ich vor, nicht ...: S –
einen Blick http: // Stackoverflow. com/questions/10347539/detect-between-a-mobile-browser-oder-phonegap-application/10348353 # 10348353 – Futur