{"__v":38,"_id":"54d1f61c441be60d00b981cf","category":{"__v":13,"_id":"547cd7672eaee50800ed108d","pages":["547cd7682eaee50800ed108f","54c8fc417a11f60d0022a83f","54c8fc8b4574700d00f01654","54c903d90174630d00efa894","54c904217a11f60d0022a851","54c904470174630d00efa899","54c9ed8a4574700d00f01869","54c9f27d7a11f60d0022aa82","54d0e25a095c470d00d16420","54d0f835cfd8ce0d007de88a","54d1f61c441be60d00b981cf","54d216df441be60d00b981fe","54f727090585de250064e20d"],"project":"547cd7662eaee50800ed1089","version":"547cd7662eaee50800ed108c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2014-12-01T21:02:31.346Z","from_sync":false,"order":0,"slug":"start","title":"Get Started: Mac OS Apps"},"parentDoc":null,"project":"547cd7662eaee50800ed1089","user":"547cd6ac78fd57080023ca99","version":{"__v":9,"_id":"547cd7662eaee50800ed108c","project":"547cd7662eaee50800ed1089","createdAt":"2014-12-01T21:02:30.851Z","releaseDate":"2014-12-01T21:02:30.851Z","categories":["547cd7672eaee50800ed108d","54c8f8ae0174630d00efa874","54c8f8bd7a11f60d0022a832","54c8f8c60174630d00efa876","54c8f8f10174630d00efa877","55155826bc466623002afe83","551558324c7c1e39003735a0","56052058e266000d008971c7","57909a453b845d0e006a37d5"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":["55679a496976ef0d0099c5bf"],"next":{"pages":[],"description":""},"createdAt":"2015-02-04T10:36:12.993Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":8,"body":"Take the steps described in [Integrate DevMateKit](doc:integrate-devmate-kit) if you haven't done it yet.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"NOTE\",\n  \"body\": \"It is not necessary to add anything to `SUUpdater` key in `info.plist` if you make an initial DevMateKit setup. The DevMateKit configured in the way that update XML is already built-in. If you are migrating an application, refer to [this article](doc:301-redirect).\"\n}\n[/block]\n# Test Updates Integration\n1. Add a new Object component from 'Object library' to your main XIB file and change its class name to `SUUpdater`.\n2. Connect the `checkForUpdates` action of a newly created `SUUpdater` object with the corresponding menu item or button inside the XIB files.\n3. Build and run your application. Try to update it.\n\nSee a [GitHub example](https://github.com/DevMate/DevMateKit/tree/master/Examples/UpdatesExample) for more information.\n\nWe strongly recommend testing the update procedure before publishing a release. To enable testing mode, do any of the following:\n  * Set `SUUpdaterIsInTestMode` value to YES/NO in your application user defaults\n  * Implement `SUUpdater` delegate method `-isUpdaterInTestMode:`\n  \nTo check how update for beta versions works, do any of the following: \n  * Set `SUUpdaterChecksForBetaUpdates` value to YES/NO in your application user defaults\n  * Implement `SUUpdater` delegate method `-updaterShouldCheckForBetaUpdates:` \n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Implemented delegate methods have higher priority than values saved in user preferences. For more information, check the `SUUpdaterDelegate_DevMateInteraction` category in the `<DevMateKit/SUUpdater.h>` header file.\",\n  \"title\": \"NOTE\"\n}\n[/block]\nAdditionally, you can configure updates of your main application bundle from the helper app. Refer to the [GitHub example](https://github.com/DevMate/DevMateKit/tree/master/Examples/MainUpdaterExample) to learn more.\n\n# Silent Updates\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"NOTE\",\n  \"body\": \"Silent updates are supported in DevMateKit v1.3 and higher. If you have an older version of DevMateKit, consider updating it.\"\n}\n[/block]\nSilent updates are turned off by default. To enable this feature, do the following:\n\n1. To turn on automatic check for updates (by default), add the following code snippet when initializing your `SUUpdater` instance:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[SUUpdater sharedUpdater].automaticallyChecksForUpdates = YES;\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\nAlternatively, add the `SUEnableAutomaticChecks` key set to `YES` into your Info.plist file.\n\n2. To turn on automatic download and installation of updates, configure the `SUUpdater` instance:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[SUUpdater sharedUpdater].automaticallyDownloadsUpdates = YES;\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\nWe recommend giving your users the choice between silent and manual updates. For example, this capability can be implemented via the corresponding checkboxes in preferences ('Check for updates automatically' and 'Install updates automatically').","excerpt":"","slug":"updates","type":"basic","title":"Updates"}
Take the steps described in [Integrate DevMateKit](doc:integrate-devmate-kit) if you haven't done it yet. [block:callout] { "type": "info", "title": "NOTE", "body": "It is not necessary to add anything to `SUUpdater` key in `info.plist` if you make an initial DevMateKit setup. The DevMateKit configured in the way that update XML is already built-in. If you are migrating an application, refer to [this article](doc:301-redirect)." } [/block] # Test Updates Integration 1. Add a new Object component from 'Object library' to your main XIB file and change its class name to `SUUpdater`. 2. Connect the `checkForUpdates` action of a newly created `SUUpdater` object with the corresponding menu item or button inside the XIB files. 3. Build and run your application. Try to update it. See a [GitHub example](https://github.com/DevMate/DevMateKit/tree/master/Examples/UpdatesExample) for more information. We strongly recommend testing the update procedure before publishing a release. To enable testing mode, do any of the following: * Set `SUUpdaterIsInTestMode` value to YES/NO in your application user defaults * Implement `SUUpdater` delegate method `-isUpdaterInTestMode:` To check how update for beta versions works, do any of the following: * Set `SUUpdaterChecksForBetaUpdates` value to YES/NO in your application user defaults * Implement `SUUpdater` delegate method `-updaterShouldCheckForBetaUpdates:` [block:callout] { "type": "info", "body": "Implemented delegate methods have higher priority than values saved in user preferences. For more information, check the `SUUpdaterDelegate_DevMateInteraction` category in the `<DevMateKit/SUUpdater.h>` header file.", "title": "NOTE" } [/block] Additionally, you can configure updates of your main application bundle from the helper app. Refer to the [GitHub example](https://github.com/DevMate/DevMateKit/tree/master/Examples/MainUpdaterExample) to learn more. # Silent Updates [block:callout] { "type": "info", "title": "NOTE", "body": "Silent updates are supported in DevMateKit v1.3 and higher. If you have an older version of DevMateKit, consider updating it." } [/block] Silent updates are turned off by default. To enable this feature, do the following: 1. To turn on automatic check for updates (by default), add the following code snippet when initializing your `SUUpdater` instance: [block:code] { "codes": [ { "code": "[SUUpdater sharedUpdater].automaticallyChecksForUpdates = YES;", "language": "objectivec" } ] } [/block] Alternatively, add the `SUEnableAutomaticChecks` key set to `YES` into your Info.plist file. 2. To turn on automatic download and installation of updates, configure the `SUUpdater` instance: [block:code] { "codes": [ { "code": "[SUUpdater sharedUpdater].automaticallyDownloadsUpdates = YES;", "language": "objectivec" } ] } [/block] We recommend giving your users the choice between silent and manual updates. For example, this capability can be implemented via the corresponding checkboxes in preferences ('Check for updates automatically' and 'Install updates automatically').