{"_id":"56d1f33900a2a70b00b365a9","parentDoc":null,"project":"5526c95cf69851170038b48f","user":"5526ca4cf69851170038b496","__v":0,"category":{"_id":"56d1f33900a2a70b00b36594","pages":["56d1f33900a2a70b00b3659b","56d1f33900a2a70b00b3659c","56d1f33900a2a70b00b3659d","56d1f33900a2a70b00b3659e","56d1f33900a2a70b00b3659f","56d1f33900a2a70b00b365a0","56d1f33900a2a70b00b365a1","56d1f33900a2a70b00b365a2","56d1f33900a2a70b00b365a3","56d1f33900a2a70b00b365a4","56d1f33900a2a70b00b365a5","56d1f33900a2a70b00b365a6","56d1f33900a2a70b00b365a7","56d1f33900a2a70b00b365a8","56d1f33900a2a70b00b365a9"],"__v":1,"project":"5526c95cf69851170038b48f","version":"56d1f33700a2a70b00b3658e","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-04-10T15:43:37.809Z","from_sync":false,"order":4,"slug":"ionic-deploy","title":"Ionic Deploy"},"version":{"_id":"56d1f33700a2a70b00b3658e","project":"5526c95cf69851170038b48f","__v":2,"createdAt":"2016-02-27T19:04:23.946Z","releaseDate":"2016-02-27T19:04:23.946Z","categories":["56d1f33900a2a70b00b3658f","56d1f33900a2a70b00b36590","56d1f33900a2a70b00b36591","56d1f33900a2a70b00b36592","56d1f33900a2a70b00b36593","56d1f33900a2a70b00b36594","56d1f33900a2a70b00b36595","56d1f33900a2a70b00b36596","56d1f33900a2a70b00b36597","56d1f33900a2a70b00b36598","56d1f33900a2a70b00b36599","56d1f33900a2a70b00b3659a","571f9497ada30c34003b7cee"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"beta","version_clean":"2.0.0-beta","version":"2.0.0-beta"},"updates":["55d09b458d728e0d00cc5b95"],"next":{"pages":[],"description":""},"createdAt":"2015-06-30T15:47:54.747Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":8,"body":"[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Dependencies\",\n  \"body\": \"Binary checks require that you upgrade your deploy plugin (`ionic-plugin-deploy`) to version `0.2.1` or greater.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Overview\"\n}\n[/block]\nEach time you run `ionic upload`, a new version of your app becomes available in your Deploy dashboard.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Gqb3MxzRheIMs7PrJuA0_Screen%20Shot%202015-06-30%20at%2010.58.16%20AM.png\",\n        \"Screen Shot 2015-06-30 at 10.58.16 AM.png\",\n        \"2346\",\n        \"250\",\n        \"#ae836c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nEach upload has an *EDIT* button that, when clicked, will bring up the configuration for that upload. There are two things you can edit with any given upload: The upload note & the **binary versions** for both iOS and Android.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Xt7QPxGuSoelIjYzQaEw_Screen%20Shot%202015-06-30%20at%2011.02.41%20AM.png\",\n        \"Screen Shot 2015-06-30 at 11.02.41 AM.png\",\n        \"1316\",\n        \"1314\",\n        \"#4e8df7\",\n        \"\"\n      ],\n      \"caption\": \"Editing an uploaded version\"\n    }\n  ]\n}\n[/block]\nBinary versions allow you to set the [semantic version](http://semver.org/) of your app. The binary version is specified in your `config.xml`. Make sure that the version in `config.xml` corresponds to the MAJOR.MINOR.PATCH pattern. \n\nRead on to find out why you would want or need to fill out these values.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Semantic Versioning\"\n}\n[/block]\nBinary compatibility is only supported when using a valid  [semantic version](http://semver.org/). Please read up on semantic versioning if you are unfamiliar with it. \n[block:callout]\n{\n  \"type\": \"danger\",\n  \"body\": \"We do not have plans to support other versioning systems at this time.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"The App Store Problem\"\n}\n[/block]\nLet's say you've developed your app and it is available in the iOS or Android app stores. Let's say you also happen to have an active Ionic Deploy that is the same version that you submitted to the app store. Let's say our fictional user, let's call her Susan, installs your app from the app store and runs it for the first time.\n\nBecause no previous versions have been deployed to Susan's device, her device thinks that an update is available immediately and will prompt her (dependent on your app) to download the latest update. Well we don't want that now do we!\n\nThis is what the **Equivalent** version is for.  Set the value of the `Equivalent` version to the current app store binary version if you want to effectively *ignore* the update if they are using that binary version. \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Binary Incompatibilities\"\n}\n[/block]\nIonic Deploy is great for updating your app with small text updates or other *non-binary* updates, but what happens when you push out a new  app store version that has some fancy new binary changes?\n\nIn some cases, you might be able to just do some simple checks in your app code before trying to use the new binary features, but often this is either too much work or not feasible for non-backwards compatible versions.\n\nThis is where the **Minimum** and **Maximum** versions come into play. These are min and max binary versions that are compatible with the update.\n\n# When to set Minimum version\n\nYou'll want to set the minimum binary version when you introduce new binary changes that the version is dependent on. It's a good idea to always set a minimum binary version, but it is not strictly required.\n\n# When to set the Maximum version\n\nYou'll want to set the maximum binary version when you have multiple deploys across different [Deploy Channels](doc:deploy-channels) and you want to make sure that new binary changes do not affect channels that use older versions.","excerpt":"","slug":"deploy-binary-versioning","type":"basic","title":"Binary Versioning"}
[block:callout] { "type": "warning", "title": "Dependencies", "body": "Binary checks require that you upgrade your deploy plugin (`ionic-plugin-deploy`) to version `0.2.1` or greater." } [/block] [block:api-header] { "type": "basic", "title": "Overview" } [/block] Each time you run `ionic upload`, a new version of your app becomes available in your Deploy dashboard. [block:image] { "images": [ { "image": [ "https://files.readme.io/Gqb3MxzRheIMs7PrJuA0_Screen%20Shot%202015-06-30%20at%2010.58.16%20AM.png", "Screen Shot 2015-06-30 at 10.58.16 AM.png", "2346", "250", "#ae836c", "" ] } ] } [/block] Each upload has an *EDIT* button that, when clicked, will bring up the configuration for that upload. There are two things you can edit with any given upload: The upload note & the **binary versions** for both iOS and Android. [block:image] { "images": [ { "image": [ "https://files.readme.io/Xt7QPxGuSoelIjYzQaEw_Screen%20Shot%202015-06-30%20at%2011.02.41%20AM.png", "Screen Shot 2015-06-30 at 11.02.41 AM.png", "1316", "1314", "#4e8df7", "" ], "caption": "Editing an uploaded version" } ] } [/block] Binary versions allow you to set the [semantic version](http://semver.org/) of your app. The binary version is specified in your `config.xml`. Make sure that the version in `config.xml` corresponds to the MAJOR.MINOR.PATCH pattern. Read on to find out why you would want or need to fill out these values. [block:api-header] { "type": "basic", "title": "Semantic Versioning" } [/block] Binary compatibility is only supported when using a valid [semantic version](http://semver.org/). Please read up on semantic versioning if you are unfamiliar with it. [block:callout] { "type": "danger", "body": "We do not have plans to support other versioning systems at this time." } [/block] [block:api-header] { "type": "basic", "title": "The App Store Problem" } [/block] Let's say you've developed your app and it is available in the iOS or Android app stores. Let's say you also happen to have an active Ionic Deploy that is the same version that you submitted to the app store. Let's say our fictional user, let's call her Susan, installs your app from the app store and runs it for the first time. Because no previous versions have been deployed to Susan's device, her device thinks that an update is available immediately and will prompt her (dependent on your app) to download the latest update. Well we don't want that now do we! This is what the **Equivalent** version is for. Set the value of the `Equivalent` version to the current app store binary version if you want to effectively *ignore* the update if they are using that binary version. [block:api-header] { "type": "basic", "title": "Binary Incompatibilities" } [/block] Ionic Deploy is great for updating your app with small text updates or other *non-binary* updates, but what happens when you push out a new app store version that has some fancy new binary changes? In some cases, you might be able to just do some simple checks in your app code before trying to use the new binary features, but often this is either too much work or not feasible for non-backwards compatible versions. This is where the **Minimum** and **Maximum** versions come into play. These are min and max binary versions that are compatible with the update. # When to set Minimum version You'll want to set the minimum binary version when you introduce new binary changes that the version is dependent on. It's a good idea to always set a minimum binary version, but it is not strictly required. # When to set the Maximum version You'll want to set the maximum binary version when you have multiple deploys across different [Deploy Channels](doc:deploy-channels) and you want to make sure that new binary changes do not affect channels that use older versions.