/howto

DEPRECATED: Just collecting some howtos on meteor, cordova etc.

MIT LicenseMIT

DEPRECATED: No longer maintained

howto

Just collecting some howtos on meteor, cordova etc.

#Cordova 3.x and Meteor Ok some stuff to be aware of:

##CLI The new cordova cli is really great - I only use this when writing so no eclipse og xcode have to be open + you only have one code and config to work on (almost) When making direct changes in the platforms folder these are preserved - this is really nice specially the configs.

In short:

###Install

$ npm install cordova -g

###Create

$ cordova create hello com.domain.hello Hello

###Add platforms

$ cd hello
$ cordova platform add android
$ cordova platform add ios

###Plugins This is a really great feature - you can add plugins directly from git Eg. add the device

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

Remove

$ cordova plugins
[ 'org.apache.cordova.core.device' ]

$ cordova plugin rm org.apache.cordova.core.device

This installs and rigs the plugin for all the platforms, nice

###Build Use this step if you have altered some config or platform code

$ cordova build

###Emulate Again a super cool featur

$ cordova emulate iphone

This fires up the emulator on ios - might have to set the device in the emulator to iphone + adt / eclipse to configure the default emulated device

###Run If you have a device connected you can run the app on the device

$ cordova run android

You might have to open adt or eclipse to connect the device the first time

###Logcat Using android device to run the app you might want to access the console

$ adb logcat

You can also just grap the console.log's from the html

$ adb logcat | grep "I/Web"

You can grep anything - eg. if you do console.log('DEBUG: ' + myMessage) then grep out the 'DEBUG:' to isolate the log to this output

##Appcache Appcache in 2.x android is not working above approximate 3.5-3.7mb - this can be fixed In the main java file add

        import android.webkit.WebSettings;
        
        ...
        
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml
        super.loadUrl(Config.getStartUrl());
        //super.loadUrl("file:///android_asset/www/index.html")
        ....
        // Add this to activate 8mb appcache
        super.appView.getSettings().setDomStorageEnabled(true);
        super.appView.getSettings().setAppCacheMaxSize(1024*1024*8);
        super.appView.getSettings().setAppCachePath("/data/data/dk.gi2.sitdrift/cache");
        super.appView.getSettings().setAllowFileAccess(true);
        super.appView.getSettings().setAppCacheEnabled(true);
        super.appView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

##Fullscreen In cordova 3.x theres a flag in the config.xml

  <preference name="fullscreen" value="true" />

But... The version I'm using I have to activate this in the IOS config too: /project/platforms/ios/Hello/*.plist Add this flag:

    <key>UIStatusBarHidden</key>
    <true/>

In the html use the normal meta settings:

  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no"/>

And remember to set some styling on the html:

   * {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }

    html {
      -ms-touch-action: none;
      height: 100%;
      background-color: black;
    }

    html, body, iframe {
      overflow: hidden;
    }

    body {
      height: 100%;
      padding: 0;
      margin: 0;
      border: 0;
      background-color: black;
    }

    /* I'm using an iframe for my meteor as a shell - this way I can fallback if no connection on load */
    /* I've built a simple interface for meteor to communicate with cordova through the iframe */
    iframe {
      background-color: black;
      border: none;
      height: 100%;
      width: 100%;
    }

##Splashscreen

###Android Add this line

        super.setIntegerProperty("splashscreen", R.drawable.splash);
        super.loadUrl(Config.getStartUrl(), 7000);

Create ressource in drawable: (To make the splashscreen not stretch)

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/splashImage"
    android:gravity="center_horizontal|center_vertical" />