Suche…


Seitenlayout auf verschiedenen Geräten - CSS

Wenn Ihre Anwendung auf verschiedenen Geräten ausgeführt werden soll, muss sie je nach Gerätegröße in verschiedenen ViewPorts gerendert werden. Sie können auf zwei Arten damit umgehen: mit Javascript-Regeln oder CSS-Medienstilen. Wenn Sie eine MVC- oder MVVM-Bibliothek wie Angular oder Ember (oder Blaze für diese Angelegenheit) verwendet haben und nur ein einzelnes Gerät oder eine Hardwareplattform anvisiert haben, müssen Sie möglicherweise Ihr MVC-Modell überdenken, da andere Hardware-ViewPorts vorhanden sind in Ihre Bewerbung eingeführt.

// desktop 
@media only screen and (min-width: 960px) {
}

// landscape orientation
@media only screen and (min-width: 768px) {
}

// portrait orientation
@media only screen and (min-width: 480px) {
}

Sie müssen herausfinden, ob Sie die Stile bei 768px (Hochformat) oder 1024 Pixel (Querformat) aufteilen möchten. Angenommen, Ihr mobiles Zielgerät ist das iPad, das ein Verhältnis von 3: 4 verwendet. Andernfalls müssen Sie die Seitenverhältnisse der Geräte ermitteln, auf die Sie abzielen möchten, und die Schwellenwerte von dort aus ermitteln.

Festgelegte Fenstergröße

Wenn Sie Layouts mit Bildschirmen mit fester Größe für verschiedene mobile Geräte entwerfen, möchten Sie möglicherweise dieses Design spiegeln, wenn Sie Ihre App auf einem Desktop ausführen. Mit der folgenden Methode wird die Größe des Fensters AUSSERHALB von PhoneGap festgelegt, wodurch ein Fenster mit fester Größe auf dem Desktop angezeigt wird. Manchmal ist es am einfachsten, die Erwartungen der Benutzer und das Design der Benutzeroberfläche durch Einschränken der Optionen zu verwalten!

// create a window of a specific size
var w=window.open('','', 'width=100,height=100');
w.resizeTo(500,500);

// prevent window resize
var size = [window.width,window.height];  //public variable
$(window).resize(function(){
    window.resizeTo(size[0],size[1]);
});

Offline-Zwischenspeicherung

Damit all dies funktioniert, benötigen Sie wahrscheinlich eine Offline-Unterstützung, d.

meteor add appcache
meteor add grounddb

Scroll-Bounce deaktivieren

Bei Desktop-Apps möchten Sie möglicherweise den Scroll-Bounce-Modus deaktivieren, um Ihrer App ein natürlicheres Gefühl zu verleihen. Sie können dies mit Javascript tun, indem Sie deaktivieren, wie der Browser das DOM steuert:

// prevent scrolling on the whole page
// this is not meteorish; TODO: translate to meteor-centric code
document.ontouchmove = function(e) {e.preventDefault()};

// prevent scrolling on specific elements
// this is not meteorish; TODO: translate to meteor-centric code
scrollableDiv.ontouchmove = function(e) {e.stopPropagation()};

Alternativ können Sie css sowie die Überlauf- und Bildlaufstile verwenden.

#appBody {
  overflow: hidden;
}

#contentContainer {
  .content-scrollable {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

Das Objektmodell, das für das Funktionieren des Obigen benötigt wird, sieht in etwa so aus:

<div id="appBody">
  <div id="contentContainer">
    <div class="content-scrollable">
      <!-- content -->
    </div>
  </div>
</div>

Multitouch & Gesten

Mobile Geräte verfügen im Allgemeinen über keine Tastaturen. Sie müssen also Ihrer Anwendung einige haptische Controller hinzufügen. Die zwei beliebtesten Pakete, die die Leute scheinbar verwenden, sind FastClick und Hammer. Die Installation ist einfach.

meteor add fastclick
meteor add hammer:hammer

FastClick erfordert fast keine Konfiguration, während Hammer zum Verdrahten ein bisschen Arbeit erfordert. Das konische Beispiel aus der Todos-App sieht folgendermaßen aus:

Template.appBody.onRendered(function() {
  if (Meteor.isCordova) {
    // set up a swipe left / right handler
    this.hammer = new Hammer(this.find('#appBody'));
    this.hammer.on('swipeleft swiperight', function(event) {
      if (event.gesture.direction === 'right') {
        Session.set(MENU_KEY, true);
      } else if (event.gesture.direction === 'left') {
        Session.set(MENU_KEY, false);
      }
    });
  }
});

Erstellen Sie Ihre Symbole und Begrüßungsbildschirme

Bevor Sie Ihre App kompilieren und auf Ihrem Gerät ausführen, müssen Sie einige Symbole und mobile-config.js erstellen und Ihrer App eine mobile-config.js Datei hinzufügen.

App.icons({
  // iOS
  'iphone': 'resources/icons/icon-60x60.png',
  'iphone_2x': 'resources/icons/[email protected]',
  'ipad': 'resources/icons/icon-72x72.png',
  'ipad_2x': 'resources/icons/[email protected]',

  // Android
  'android_ldpi': 'resources/icons/icon-36x36.png',
  'android_mdpi': 'resources/icons/icon-48x48.png',
  'android_hdpi': 'resources/icons/icon-72x72.png',
  'android_xhdpi': 'resources/icons/icon-96x96.png'
});

App.launchScreens({
  // iOS
  'iphone': 'resources/splash/splash-320x480.png',
  'iphone_2x': 'resources/splash/[email protected]',
  'iphone5': 'resources/splash/[email protected]',
  'ipad_portrait': 'resources/splash/splash-768x1024.png',
  'ipad_portrait_2x': 'resources/splash/[email protected]',
  'ipad_landscape': 'resources/splash/splash-1024x768.png',
  'ipad_landscape_2x': 'resources/splash/[email protected]',

  // Android
  'android_ldpi_portrait': 'resources/splash/splash-200x320.png',
  'android_ldpi_landscape': 'resources/splash/splash-320x200.png',
  'android_mdpi_portrait': 'resources/splash/splash-320x480.png',
  'android_mdpi_landscape': 'resources/splash/splash-480x320.png',
  'android_hdpi_portrait': 'resources/splash/splash-480x800.png',
  'android_hdpi_landscape': 'resources/splash/splash-800x480.png',
  'android_xhdpi_portrait': 'resources/splash/splash-720x1280.png',
  'android_xhdpi_landscape': 'resources/splash/splash-1280x720.png'
});

Meteor Cordova Architektur-Pipeline

Jetzt ist es an der Zeit, die Dokumentation zur Meteor Cordova Phonegap Integration durchzugehen .

Seit der Erstellung dieser Dokumentation wurden XCode und Yosemite veröffentlicht, was bei der Installation zu Problemen führte. Hier sind die Schritte, die wir durchführen mussten, um Meteor auf einem iOS-Gerät zu kompilieren.

  • Upgrade auf Yosemite.
  • XCode löschen (aus dem Anwendungsordner in den Papierkorb ziehen)
  • Installieren Sie XCode 6.1 aus dem App Store.
  • Stimmen Sie den verschiedenen Bedingungen zu.
# 5.  clone and rebuild the ios-sim locally
#     (this step will not be needed in future releases)
git clone https://github.com/phonegap/ios-sim.git
cd ios-sim
rake build

# 6.  make sure we can update the .meteor/packages locations
#     (this step will not be needed in future releases)
sudo chmod -R 777 ~/.meteor/packages

# 7.  copy the new build into Meteor locations
#     (this step will not be needed in future releases)
for i in `find ~/.meteor/packages/meteor-tool/ -name ios-sim -type f`; do
  cp -R ./build/Release/ios-sim "$i"
done

# 8.  install the ios platform to your app
cd myapp
meteor list-platforms
meteor add-platform ios
meteor list-platforms

# 9.  and that there aren't dead processes
ps -ax 
kill -9 <pid>
# /Users/abigailwatson/.meteor/packages/meteor-tool/.1.0.35.wql4jh++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/mongodb/bin/mongod
# tail -f /Users/abigailwatson/Code/Medstar/dart/webapp/.meteor/local/cordova-build/platforms/ios/cordova/console.log

# 10.  make sure there are correct permissions on the application (important!)
sudo chmod -R 777 .meteor/local/

# 11.  run app
meteor run ios

# 12.  if that doesn't work, clear the directory
sudo rm -rf .meteor/local

# 13a.  run meteor again to create the default browser build
meteor

# 13b.  run it a second time so bootstrap and other packages get downloaded into the browser build
ctrl-x
meteor

# 14.  then run the ios version
ctrl-x
meteor run ios

XCode sollte während des Prozesses gestartet werden. Wählen Sie Ihren Simulator aus und drücken Sie die 'Play'-Taste.

IOS-Entwicklung

  • Registrieren Sie Ihren Apple Developer Account
  • Registrieren Sie eine App-ID für Ihre App
  • Registrieren Sie die UUID Ihrer Testgeräte
  • Generieren eines Bereitstellungsprofils für die iOS-App-Entwicklung
  • Gehen Sie zu XCode> Einstellungen> Konten und registrieren Sie Ihr Apple Developer Account

IOS-Gerätetest

  • Stellen Sie sicher, dass Ihre Entwicklungs-Workstation und Ihr iPhone mit demselben WLAN-Netzwerk verbunden sind. Tethering, Hotspots und andere Ad-hoc-Netzwerke funktionieren nicht.
  • Führen Sie sudo meteor run ios-device
  • Bereitstellen auf Ihrem Gerät!

Konfigurieren Sie Ihr Cordova-Projekt (config.xml)

Meteor liest während des mobile-config.js eine mobile-config.js Datei im Stammverzeichnis Ihres App-Verzeichnisses und verwendet die dort angegebenen Einstellungen, um config.xml zu generieren.

Project_folder
 ├── /.meteor
 └── mobile-config.js

Die meisten Konfigurationen können mit mobile-config.js (App-Metadaten, Voreinstellungen, Symbolen und Startbildschirmen sowie Installationsparametern für Cordova-Plugins) erreicht werden.

App.info({
  id: 'com.example.matt.uber',
  name: 'über',
  description: 'Get über power in one button click',
  author: 'Matt Development Group',
  email: '[email protected]',
  website: 'http://example.com'
});

// Set up resources such as icons and launch screens.
App.icons({
  'iphone': 'icons/icon-60.png',
  'iphone_2x': 'icons/[email protected]',
  // ... more screen sizes and platforms ...
});

App.launchScreens({
  'iphone': 'splash/Default~iphone.png',
  'iphone_2x': 'splash/Default@2x~iphone.png',
  // ... more screen sizes and platforms ...
});

// Set PhoneGap/Cordova preferences
App.setPreference('BackgroundColor', '0xff0000ff');
App.setPreference('HideKeyboardFormAccessoryBar', true);
App.setPreference('Orientation', 'default');
App.setPreference('Orientation', 'all', 'ios');

// Pass preferences for a particular PhoneGap/Cordova plugin
App.configurePlugin('com.phonegap.plugins.facebookconnect', {
  APP_ID: '1234567890',
  API_KEY: 'supersecretapikey'
});

Bearbeiten Sie die Datei /.meteor/local/cordova-build/config.xml nicht manuell, da sie bei jedem meteor run ios/android oder meteor build wird. Dadurch gehen alle Ihre Änderungen verloren.

Referenzseite: Meteor Guide> Build> Mobile> App konfigurieren

Erkennen des Geräteereignisses

Natürlich ist die Erkennung von Mobilgeräten am besten, wenn Sie von der Hardware direkt benachrichtigt werden. Cordova PhoneGap stellt ein "deviceready" -Ereignis bereit, zu dem Sie einen Ereignis-Listener hinzufügen können.

 document.addEventListener('deviceready', function(){
  Session.set('deviceready', true);
 }, false);


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow