Mobile Configuration

Documentation of Meteor's Cordova configuration API.

If your Meteor application targets mobile platforms such as iOS or Android, you can configure your app’s metadata and build process in a special top-level file called mobile-config.js which is not included in your application and is used only for this configuration.

The code snippet below is an example mobile-config.js file. The rest of this section will explain the specific API commands in greater detail.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// This section sets up some basic app metadata, the entire section is optional.
App.info({
id: 'com.example.matt.uber',
name: 'über',
description: 'Get über power in one button click',
author: 'Matt Development Group',
email: 'contact@example.com',
website: 'http://example.com'
});
// Set up resources such as icons and launch screens.
App.icons({
'iphone_2x': 'icons/icon-60@2x.png',
'iphone_3x': 'icons/icon-60@3x.png',
// More screen sizes and platforms...
});
App.launchScreens({
'iphone_2x': 'splash/Default@2x~iphone.png',
'iphone5': 'splash/Default~iphone5.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'
});
// Add custom tags for a particular PhoneGap/Cordova plugin to the end of the
// generated config.xml. 'Universal Links' is shown as an example here.
App.appendToConfig(`
<universal-links>
<host name="localhost:3000" />
</universal-links>
`);

Set your mobile app's core configuration information.

Options

id, version, name, description, author, email, website String

Each of the options correspond to a key in the app's core configuration as described in the Cordova documentation.

Add a preference for your build as described in the Cordova documentation.

Arguments

name String

A preference name supported by Cordova's config.xml.

value String

The value for that preference.

platform String

Optional. A platform name (either ios or android) to add a platform-specific preference.

Set a new access rule based on origin domain for your app. By default your application has a limited list of servers it can contact. Use this method to extend this list.

Default access rules:

  • tel:*, geo:*, mailto:*, sms:*, market:* are allowed and are handled by the system (e.g. opened in the phone app or an email client)
  • http://localhost:* is used to serve the app's assets from.
  • The domain or address of the Meteor server to connect to for DDP and hot code push of new versions.

Read more about domain patterns in Cordova docs.

Starting with Meteor 1.0.4 access rule for all domains and protocols (<access origin="*"/>) is no longer set by default due to certain kind of possible attacks.

Arguments

pattern String

The pattern defining affected domains or URLs.

Options

type String

Possible values:

  • 'intent': Controls which URLs the app is allowed to ask the system to open. (e.g. in the phone app or an email client).
  • 'navigation': Controls which URLs the WebView itself can be navigated to (can also needed for iframes).
  • 'network' or undefined: Controls which network requests (images, XHRs, etc) are allowed to be made.
launchExternal Boolean

(Deprecated, use type: 'intent' instead.)

For example this Cordova whitelist syntax:

1
2
<access origin="https://www.google-analytics.com" />
<allow-navigation href="https://example.com" />

is equivalent to:

1
2
App.accessRule('https://www.google-analytics.com');
App.accessRule('https://example.com', { type: 'navigation' });

Set the build-time configuration for a Cordova plugin.

Arguments

id String

The identifier of the plugin you want to configure.

config Object

A set of key-value pairs which will be passed at build-time to configure the specified plugin.

Set the icons for your mobile app.

Arguments

icons Object

An Object where the keys are different devices and screen sizes, and values are image paths relative to the project root directory.

Valid key values:

  • app_store (1024x1024) // Apple App Store
  • iphone_2x (120x120) // iPhone 5, SE, 6, 6s, 7, 8
  • iphone_3x (180x180) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X
  • ipad_2x (152x152) // iPad, iPad mini
  • ipad_pro (167x167) // iPad Pro
  • ios_settings_2x (58x58) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro
  • ios_settings_3x (87x87) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X
  • ios_spotlight_2x (80x80) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro
  • ios_spotlight_3x (120x120) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X
  • ios_notification_2x (40x40) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro
  • ios_notification_3x (60x60 // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X
  • ipad (76x76) // Legacy
  • ios_settings (29x29) // Legacy
  • ios_spotlight (40x40) // Legacy
  • ios_notification (20x20) // Legacy
  • iphone_legacy (57x57) // Legacy
  • iphone_legacy_2x (114x114) // Legacy
  • ipad_spotlight_legacy (50x50) // Legacy
  • ipad_spotlight_legacy_2x (100x100) // Legacy
  • ipad_app_legacy (72x72) // Legacy
  • ipad_app_legacy_2x (144x144) // Legacy
  • android_mdpi (48x48)
  • android_hdpi (72x72)
  • android_xhdpi (96x96)
  • android_xxhdpi (144x144)
  • android_xxxhdpi (192x192)

Set the launch screen images for your mobile app.

Arguments

launchScreens Object

A dictionary where keys are different devices, screen sizes, and orientations, and the values are image paths relative to the project root directory.

For Android, launch screen images should be special "Nine-patch" image files that specify how they should be stretched. See the Android docs.

Valid key values:

  • iphone5 (640x1136) // iPhone 5, SE
  • iphone6 (750x1334) // iPhone 6, 6s, 7, 8
  • iphone6p_portrait (1242x2208) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus
  • iphone6p_landscape (2208x1242) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus
  • iphoneX_portrait (1125x2436) // iPhone X
  • iphoneX_landscape (2436x1125) // iPhone X
  • ipad_portrait_2x (1536x2048) // iPad, iPad mini
  • ipad_landscape_2x (2048x1536) // iPad, iPad mini
  • ipad_portrait_pro_10_5 (1668x2224) // iPad Pro 10.5"
  • ipad_landscape_pro_10_5 (2224x1668) // iPad Pro 10.5"
  • ipad_portrait_pro_12_9 (2048x2732) // iPad Pro 12.9"
  • ipad_landscape_pro_12_9 (2732x2048) // iPad Pro 12.9"
  • iphone_2x (640x960) // Legacy
  • ipad_portrait (768x1024) // Legacy
  • ipad_landscape (1024x768) // Legacy
  • android_mdpi_portrait (320x480)
  • android_mdpi_landscape (480x320)
  • android_hdpi_portrait (480x800)
  • android_hdpi_landscape (800x480)
  • android_xhdpi_portrait (720x1280)
  • android_xhdpi_landscape (1280x720)
  • android_xxhdpi_portrait (960x1600)
  • android_xxhdpi_landscape (1600x960)
  • android_xxxhdpi_portrait (1280x1920)
  • android_xxxhdpi_landscape (1920x1280)

Append custom tags into config's widget element.

App.appendToConfig('<any-xml-content/>');

Arguments

element String

The XML you want to include

Edit on GitHub