{"id":22413544,"url":"https://github.com/nextfaze/unity-manup","last_synced_at":"2026-04-24T11:33:17.793Z","repository":{"id":138431953,"uuid":"110176221","full_name":"NextFaze/unity-manup","owner":"NextFaze","description":"Mandatory Update for Unity3D applications","archived":false,"fork":false,"pushed_at":"2017-11-24T06:05:35.000Z","size":68,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-04T06:17:26.291Z","etag":null,"topics":["unity3d-plugin"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NextFaze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-09T23:06:13.000Z","updated_at":"2017-11-24T06:03:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"abceb0c9-8f29-43b5-9f03-883ba28e6c2e","html_url":"https://github.com/NextFaze/unity-manup","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NextFaze/unity-manup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextFaze%2Funity-manup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextFaze%2Funity-manup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextFaze%2Funity-manup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextFaze%2Funity-manup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NextFaze","download_url":"https://codeload.github.com/NextFaze/unity-manup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextFaze%2Funity-manup/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262714506,"owners_count":23352464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["unity3d-plugin"],"created_at":"2024-12-05T14:13:23.170Z","updated_at":"2026-04-24T11:33:12.772Z","avatar_url":"https://github.com/NextFaze.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mandatory Update for Unity3D\n\nSometimes you have an app which talks to services in the cloud. Sometimes,\nthose services change, and your app no longer works. Wouldn't it be great if\nthe app could let the user know there's an update? That's what this module\ndoes.\n\nMandatory Update (manup) works like this:\n\n1. Your app starts up, before performing any application initialization, it\n   downloads a small file from a remote server\n\n2. The small file contains the following information\n   * The current latest version of the app\n   * The minimum required version\n   * Whether the app is enabled\n\n3. The app compares itself with the version metadata, and presents an alert to\n   the user. Alerts come in three flavours\n   * Mandatory Update required. The user will be notified that they need to\n     update to continue. The alert has a link to the relevant app store.\n   * Optional Update. The user will be notified there is an update, but will\n     have the option to continue using the current version\n   * Maintenance Mode. The user will be notified that the app is unavailable,\n     and to try again later.\n\n4. The app waits for the manup service to complete, then continues\n   initialisation like normal\n\n## Requirements\n\nManup assumes you are using Semantic Versioning for your app, and requires at least 2 values (i.e major.minor)\n\n## Installation\n\nSimply import the Unity package to get started. If you are already using SimpleJSON in your project, feel free to unselect it - otherwise there will be a conflict.\n\n## Usage\n\nOnce the package is imported, you will find the ManUp folder under Plugins. To get started you can drag the prefab into your main startup scene, this will keep the ManUp object persistent throughout the life of the app.\n\n* If an Event System is not detected, ManUp will create it's own.\n* You will need to set the Config URL in the editor to where you will be hosting your ManUp file. To make development easier, you can override this in the editor with a local text asset and drop it into the Config Override field. Be sure to also set the platform for the platform you wish to target.\n* If you wish to customise your UI layout, you can either do this by updating the prefab objects, or creating your own. Please ensure to assign the following to ManUp\n  * UI Panel (Should be the parent for the UI)\n  * Title and Message Text\n  * Ok button and text\n  * Update button and text\n  * Version text - if you wish to print the current app version\n\n### Remote file\nYou need a hosted json file that contains the version metadata. This _could_ be part of your API. However, \noften the reason for maintenance mode is because your API is down. An s3 bucket may be a safer bet,\neven though it means a little more work in maintaining the file.\n\n```json\n{\n  \"ios\": {\n    \"latest\": \"2.4.1\",\n    \"minimum\": \"2.1.0\",\n    \"url\": \"http://example.com/myAppUpdate\",\n    \"enabled\": true\n  },\n  \"android\": {\n    \"latest\": \"2.5.1\",\n    \"minimum\": \"2.1.0\",\n    \"url\": \"http://example.com/myAppUpdate/android\",\n    \"enabled\": true\n  },\n}\n```\n\n## Demonstration App\nAn example can be found in this repository \\o/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextfaze%2Funity-manup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextfaze%2Funity-manup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextfaze%2Funity-manup/lists"}