<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Make Sure Your Users Have the Latest App Version Installed | Infinum</title>
		<atom:link href="https://infinum.com/blog/make-sure-users-have-the-latest-app-version-installed/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/make-sure-users-have-the-latest-app-version-installed/</link>
		<description>Building digital products</description>
		<lastBuildDate>Fri, 03 Apr 2026 12:58:20 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>8091https://infinum.com/uploads/2017/03/make-sure-users-have-the-latest-app-version-installed-0.webp</url>
				</image>
				<title>Make Sure Your Users Have the Latest App Version Installed</title>
				<link>https://infinum.com/blog/make-sure-users-have-the-latest-app-version-installed/</link>
				<pubDate>Mon, 06 Mar 2017 18:40:00 +0000</pubDate>
				<dc:creator>Ivan Kocijan</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/make-sure-users-have-the-latest-app-version-installed/</guid>
				<description>
					<![CDATA[<p>In today’s mobile ecosystem it&#8217;s easy to publish an updated version of your application. Making sure users download it is more difficult. </p>
<p>The post <a href="https://infinum.com/blog/make-sure-users-have-the-latest-app-version-installed/">Make Sure Your Users Have the Latest App Version Installed</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-184"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	In today’s mobile ecosystem it’s easy to publish an updated version of your application. Making sure users download it is more difficult. Google and Apple provide notifications via their app stores, but more often than not, users tend to ignore them.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-96"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-97">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2017/03/make-sure-users-have-the-latest-app-version-installed-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="600"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	You can argue that it’s the users’ loss if they’re not interested in new features, but what if the new version fixes an important security issue? You need to make sure <strong>every user downloads the update</strong>. This can be accomplished within the application by disabling usage if it is not updated.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-102">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-103'
	>
	But how will the application know when a new update is available? Easily, with some help from our new open-source library.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-105">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-106'
	>
	Meet the prince</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-108">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-109'
	>
	<strong>An Android and iOS open-source library</strong> dubbed Prince of Versions standardizes notifications about application updates. The library does all the hard work: <strong>connecting to the server, parsing the configuration file, and comparing the new version with the current one</strong>. It doesn’t contain any UI, so developers can choose what to show when an update is available.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-111">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-112'
	>
	To use the library, you need to host a <strong>JSON configuration file</strong> on a server. The minimum and the current version of the application are defined in that file. When you publish a new update on Google Play, change one or both versions, and the next time the user opens your application, the library will serve a notification informing him about the new update. It is up to you to decide how the update will be shown. You can show a dialog with a button which takes the user to the app store, open a new screen, or perform some other action.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-114">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-115'
	>
	The library has <strong>three basic features</strong>:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-117">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-118'
	>
	<li>It loads a configuration file from the network and notifies the user if a new update is available</li><li>Based on the minimum version in the file, it will show whether an update is mandatory</li><li>It will notify the user about the update based on the notification type parameter you set up.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-120">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-121'
	>
	This library is built by developers for developers, so the implementation is straightforward.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-123">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-124'
	>
	How to use it</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-126"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-127">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2017/03/make-sure-users-have-the-latest-app-version-installed-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="600"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-129">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-130'
	>
	1. Put a JSON configuration file on a server</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	The version in your application and in the <strong>JSON file</strong> has to follow <strong><a href="http://semver.org/">Semantic Versioning</a></strong>. If you are using a built-in JSON parser your configuration file has to look like this:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-136"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-json github-light" data-language="json" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">ios</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">minimum_version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">1.2.3</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">latest_version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">2.4.5</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">notification_type</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">ALWAYS</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">android</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">minimum_version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">1.2.3</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">latest_version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">version</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">2.4.5</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">notification_type</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">ONCE</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">meta</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">key1</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">value1</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #005cc5;">&quot;</span><span class="token" style="color: #005cc5;">key2</span><span class="token" style="color: #005cc5;">&quot;</span><span class="token">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">value2</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-139"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-137">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-138'
	>
	2. Add the library to your project</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-142"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-140">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-141'
	>
	<strong>Android</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-144"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-groovy github-light" data-language="groovy" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">compile &amp;#</span><span class="token" style="color: #005cc5;">8217</span><span class="token">;co</span><span class="token" style="color: #d73a49;">.</span><span class="token" style="color: #005cc5;">infinum</span><span class="token">:</span><span class="token">prince</span><span class="token" style="color: #d73a49;">-</span><span class="token">of</span><span class="token" style="color: #d73a49;">-</span><span class="token" style="color: #005cc5;">versions</span><span class="token">:</span><span class="token">latest_version&amp;#</span><span class="token" style="color: #005cc5;">8217</span><span class="token">;
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-147"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-145">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-146'
	>
	<strong>iOS</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">platform </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">ios</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #d73a49;">&amp;</span><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;">8217;8.0&amp;#8217;</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token">use_frameworks!
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">pod </span><span class="token" style="color: #d73a49;">&amp;</span><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;">8217;PrinceOfVersions&amp;#8217;</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-150">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-151'
	>
	run pod install</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-154"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-shellscript github-light" data-language="shellscript" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6f42c1;">pod</span><span class="token"> </span><span class="token" style="color: #032f62;">install</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-155">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-156'
	>
	3. Check for updates</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-160"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-158">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-159'
	>
	<strong>Android</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-162"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-java github-light" data-language="java" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #24292e;">PrinceOfVersions</span><span class="token"> </span><span class="token" style="color: #24292e;">updater</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #d73a49;">new</span><span class="token"> </span><span class="token" style="color: #6f42c1;">PrinceOfVersions</span><span class="token">(</span><span class="token">context</span><span class="token">)</span><span class="token">;</span><span class="token"> 
</span></span><span class="line"><span class="token" style="color: #24292e;">LoaderFactory</span><span class="token"> </span><span class="token" style="color: #24292e;">loaderFactory</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #d73a49;">new</span><span class="token"> </span><span class="token" style="color: #6f42c1;">NetworkLoaderFactory</span><span class="token">(</span><span class="token">URL</span><span class="token">)</span><span class="token">;</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #24292e;">UpdaterResult</span><span class="token"> </span><span class="token" style="color: #24292e;">result</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #24292e;">updater</span><span class="token">.</span><span class="token" style="color: #6f42c1;">checkForUpdates</span><span class="token">(</span><span class="token">loaderFactory</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #d73a49;">new</span><span class="token"> </span><span class="token" style="color: #6f42c1;">UpdaterCallback</span><span class="token">(</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">@</span><span class="token" style="color: #d73a49;">Override</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #d73a49;">public</span><span class="token"> </span><span class="token" style="color: #d73a49;">void</span><span class="token"> </span><span class="token" style="color: #6f42c1;">onNewUpdate</span><span class="token">(</span><span class="token" style="color: #24292e;">String</span><span class="token"> </span><span class="token" style="color: #e36209;">version</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #d73a49;">boolean</span><span class="token"> </span><span class="token" style="color: #e36209;">isMandatory</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #24292e;">Map</span><span class="token">&lt;</span><span class="token" style="color: #d73a49;">String</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #d73a49;">String</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #e36209;">metadata</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">@</span><span class="token" style="color: #d73a49;">Override</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #d73a49;">public</span><span class="token"> </span><span class="token" style="color: #d73a49;">void</span><span class="token"> </span><span class="token" style="color: #6f42c1;">onNoUpdate</span><span class="token">(</span><span class="token" style="color: #24292e;">Map</span><span class="token">&lt;</span><span class="token" style="color: #d73a49;">String</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #d73a49;">String</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #e36209;">metadata</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">@</span><span class="token" style="color: #d73a49;">Override</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #d73a49;">public</span><span class="token"> </span><span class="token" style="color: #d73a49;">void</span><span class="token"> </span><span class="token" style="color: #6f42c1;">onError</span><span class="token">(</span><span class="token">@</span><span class="token" style="color: #d73a49;">ErrorCode</span><span class="token"> </span><span class="token" style="color: #d73a49;">int</span><span class="token"> </span><span class="token" style="color: #e36209;">error</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">)</span><span class="token">;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-swift github-light" data-language="swift" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">let</span><span class="token"> url </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token">URL(</span><span class="token">string:</span><span class="token"> URL</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">PrinceOfVersions(</span><span class="token">)</span><span class="token">.</span><span class="token">checkForUpdates(</span><span class="token">from:</span><span class="token"> url</span><span class="token">,
</span></span><span class="line"><span class="token">    </span><span class="token">newVersion:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">(</span><span class="token">latestVersion</span><span class="token">, </span><span class="token">isMinimumVersionSatisfied</span><span class="token">, </span><span class="token">metadata</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #d73a49;">in</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">,
</span></span><span class="line"><span class="token">    </span><span class="token">noNewVersion:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">(</span><span class="token">isMinimumVersionSatisfied</span><span class="token">, </span><span class="token">metadata</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #d73a49;">in</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">,
</span></span><span class="line"><span class="token">    </span><span class="token">error:</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">(</span><span class="token">error</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #d73a49;">in</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">}</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-167"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-165">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-166'
	>
	There is more</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-168">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-169'
	>
	We have been using the library in production for a while and it made implementing application updates a breeze.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-171">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-172'
	>
	We all know that testing is a vital part of your development process. With the library, you can load a configuration file from the application resources. By doing this, you can test your UI implementation without making an API call.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-174">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-175'
	>
	Everybody hates constraints, so if you don’t like our JSON configuration file, you can define your own and implement a custom parser.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-179"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-177">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-178'
	>
	At the moment, these features are only available in the Android library, but they are on the roadmap for iOS and will be available soon.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-182"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-180">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-181'
	>
	If you want to contribute or have any questions about the library visit our <a href="https://github.com/infinum/Android-Prince-of-Versions">Android</a> or <a href="https://github.com/infinum/iOS-prince-of-versions">iOS</a> repositories on GitHub.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/make-sure-users-have-the-latest-app-version-installed/">Make Sure Your Users Have the Latest App Version Installed</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>