<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Germán Gardiol, Author at asap developers</title>
	<atom:link href="https://www.asapdevelopers.com/author/german/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.asapdevelopers.com/author/german/</link>
	<description>San Francisco Mobile App Developers</description>
	<lastBuildDate>Mon, 30 Dec 2019 17:14:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.asapdevelopers.com/wp-content/uploads/2017/04/favicon-asap-1.png</url>
	<title>Germán Gardiol, Author at asap developers</title>
	<link>https://www.asapdevelopers.com/author/german/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>React Native CodePush introduction</title>
		<link>https://www.asapdevelopers.com/react-native-codepush-introduction/</link>
		
		<dc:creator><![CDATA[Germán Gardiol]]></dc:creator>
		<pubDate>Thu, 28 Nov 2019 14:38:24 +0000</pubDate>
				<category><![CDATA[React Native]]></category>
		<guid isPermaLink="false">https://www.asapdevelopers.com/?p=10533</guid>

					<description><![CDATA[<p>CodePush library Imagine you can deliver updates for your application in minutes, whether it is to fix errors, quickly add a functionality that users have been insistently asking for or...</p>
<p>The post <a rel="nofollow" href="https://www.asapdevelopers.com/react-native-codepush-introduction/">React Native CodePush introduction</a> appeared first on <a rel="nofollow" href="https://www.asapdevelopers.com">asap developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><strong>CodePush library</strong></h2>
<p><span style="font-weight: 400;">Imagine you can deliver updates for your application in minutes, whether it is to fix errors, quickly add a functionality that users have been insistently asking for or simply change the design of your application. Now you can easily do this thanks to the </span><span style="font-weight: 400;">React Native</span> <span style="font-weight: 400;">CodePush library</span><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">In today’s world, saving time always translates into saving money and, with this implementation, you will skip the waiting time it takes the app stores to approve the new version of your application. Not to mention the frustration of end-users when they find out there is yet another update they must download to get that fix or that new feature that they have been looking forward to.</span></p>
<h2><strong>What is React Native CodePush?</strong></h2>
<p><span style="font-weight: 400;">CodePush is a Microsoft library for <a href="https://www.asapdevelopers.com/6-reasons-why-you-should-start-using-react-native/">React Native</a> and Cordova, which allows you to launch code and image updates through a proprietary server. This will be directly installed without the need for end-users to update the application through the relevant app store.</span></p>
<p><!-- /wp:paragraph -->

<!-- wp:image --></p>
<figure class="wp-block-image"><img decoding="async" loading="lazy" class="alignnone" src="https://lh3.googleusercontent.com/iu7L4pHIYCo6sEfjfr7zlbOEwYD_zPOjZ9MWs7dI9VD4RrDbaJA1YygGr4p03mpzHjNH_S6AtstrrqCjM9raUIYTIPJ7nZadFqI-u-oLhPvn43N585w-HMwqh_TZO_rNvhijmdms" alt="React Native CodePush" width="1600" height="892" /></figure>
<p><!-- /wp:image -->

<!-- wp:paragraph --></p>
<p>Image from: <a href="https://microsoft.github.io/code-push/">microsoft.github.io</a></p>
<p><!-- /wp:paragraph -->

<!-- wp:heading {"level":1} --></p>
<h2><strong>How does it work?</strong></h2>
<p><span style="font-weight: 400;">The operation is based on wrapping our application in a </span><a href="https://medium.com/@soorajchandran/introduction-to-higher-order-components-hoc-in-react-383c9343a3aa"><span style="font-weight: 400;">HOC</span></a><span style="font-weight: 400;"> (higher-order component) of CodePush that is responsible for checking if there are new updates to our code in CodePush and reloading the application with new changes.</span></p>
<p><span style="font-weight: 400;">React Native CodePush uses its own server to save a copy of each CodePush deploy and a control version if a rollback is necessary; this can be done almost instantaneously. All of this is managed through a friendly control panel provided by Microsoft, which does not only let you control the CodePush deploys but also the conventional ones. It also lets you perform simultaneous testing of the versions on a wide variety of devices and platforms.</span></p>
<p><span style="font-weight: 400;">The library has a wide variety of configuration parameters that, among other things, allow you to choose at what time to check and download new versions of React Native CodePush for the application and also give you the possibility of using events to determine when each of these processes was completed. For example, you can notify the end-user that a new version will be installed the next time the application is restarted.</span></p>
<p><!-- /wp:heading -->

<!-- wp:heading {"level":1} --></p>
<h2><strong>Advantages</strong></h2>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Deploy the code update in minutes.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Download and update in the background.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Configurable server inquiry mode, onOpen and onResume.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">A copy of the previous update is stored (easy rollback).</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">App Center release monitor panel.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Ideal for patch/fix updates.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Compatible with:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">React Native v0.59 and earlier</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Android (4.1+)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">iOS (7+)</span></li>
</ul>
</li>
</ul>
<h2><strong>Disadvantages</strong></h2>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Forces you to have a separate version for iOS and Android.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Any changes that involve the native code (for example, modifying the AppDelegate.m/MainActivity.java file, adding a new library, etc.) cannot be distributed through CodePush and, therefore, must be updated through the relevant store.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">It does not support the following component properties:</span></li>
</ul>
<p><!-- /wp:heading -->

<!-- wp:image --></p>
<figure class="wp-block-image"><img decoding="async" loading="lazy" class="alignnone" src="https://lh4.googleusercontent.com/BUY_lpA4yi3q4HJK0jzuis7LJXQUzIIxQRAjqUVli5-lEDHcOKKzdJDyY1ryM6wTI2iQ7bAM_4AqDelN1lrFHl7LpHInMkpb808s6Chi-lUz48tr4faI1Ycj9qMk0E2vIpSbiWin" alt="React Native CodePush does not support" width="1388" height="256" /></figure>
<p><!-- /wp:image -->

<!-- wp:paragraph --></p>
<h2><strong>Integrating CodePush</strong></h2>
<p><span style="font-weight: 400;">To integrate React Native CodePush into your project, you must first have an account in the Microsoft App Center. You can create it through the following link: </span><a href="https://appcenter.ms/"><span style="font-weight: 400;">appcenter.ms</span></a><span style="font-weight: 400;">. After creating the account, you must create projects—one for Android and one for iOS—, and follow the sensuous steps you’ll find in the implementation section of your projects.</span></p>
<p><span style="font-weight: 400;">We recommend using CodePush to perform hotfixes, fix errors or graphic UI changes, because, when incorporating a new feature, in most cases, it depends on the installation of other libraries and this can be delivered by an update through CodePush. Moreover, if adding a new feature, it is convenient to go through the testing and check-up system that the app stores (the Google Play Store and the Apple Store) provide because it is important to comply with their regulations and it is beneficial to take advantage of the feedback users provide when trying out the application with that new functionality.</span></p>
<h2><strong>Code Integration</strong></h2>
<p>You will need to create two versions of the code (or branches) one for Android and one for iOS and you will have to repeat the library installation and code integration on each one.</p>
<p><span style="font-weight: 400;">Run this command in your project command line:</span></p>
<p><code>yarn add --save react-native-code-push</code></p>
<p><span style="font-weight: 400;">or this one:</span></p>
<p><code>npm install --save react-native-code-push</code></p>
<p><span style="font-weight: 400;">Once the library is installed, you will need to link it to the project:</span></p>
<p><code>react-native link react-native-code-push</code></p>
<p><span style="font-weight: 400;">At this point, the console will ask you to insert the CodePush keys for platforms.</span></p>
<p><span style="font-weight: 400;">To get these keys, go to <em>AppCenter</em> and create one application by platform. Then go to your app, </span><em><span style="font-weight: 400;">Distribute -&gt; CodePush,</span></em><span style="font-weight: 400;"> and press on the top-right tool icon to get the key.</span></p>
<p><span style="font-weight: 400;">Put the key on the console and React Native will automatically save and link CodePush keys to the project.</span></p>
<p>For iOS, if the project uses CocoaPods, go to the iOS folder and run:</p>
<p><code>pod install</code></p>
<h3><b>Integrating the SDK:</b></h3>
<p><span style="font-weight: 400;">To integrate the SDK to the project, follow the steps stated in the “Overview” section at:</span></p>
<p><code>appcenter.ms/orgs/`my_organization`/apps/`yourapp`</code></p>
<h3><b><strong>Integrating </strong>React Native CodePush to project code:</b></h3>
<p><span style="font-weight: 400;">Edit the `App.js` project file, to allow the following code:</span></p>
<p><span style="font-weight: 400;"><script src="https://gist.github.com/gergardiol/7ffe183b009ef19b9a208f32e75205e8.js"></script></span></p>
<p><span style="font-weight: 400;">This action will link the library and set a default configuration to install updates that, in this case, will check and install updates during app starts.</span></p>
<h3><strong>Releases</strong></h3>
<p><span style="font-weight: 400;">To release a new version of CodePush, open the terminal and run:</span></p>
<p><code>appcenter codepush release-react -a AsapUy/`MyAppName` -d `Beta`</code></p>
<p><span style="font-weight: 400;">Replace `MyAppName` with the name of the app, and `Beta` with the name of the environment attached to the key, and the current environment that you want to deploy to.</span></p>
<h2><strong>Final thoughts</strong></h2>
<p><span style="font-weight: 400;">As you can see, React Native CodePush is a very valuable tool when making updates to your app. It will not only save you time but also make your users happier. We believe it is definitely worth a try.</span></p>

		<div id="fws_693eb6c47b65a"  data-column-margin="default" data-midnight="dark"  data-bg-mobile-hidden="" class="wpb_row vc_row-fluid vc_row top-level standard_section "  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="row-bg"  style=""></div></div><div class="row-bg-overlay" ></div></div><div class="col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding"  data-t-w-inherits="default" data-border-radius="none" data-shadow="none" data-border-animation="" data-border-animation-delay="" data-border-width="none" data-border-style="solid" data-border-color="" data-bg-cover="" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-hover-bg="" data-hover-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-bg-overlay-wrap" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
			<div class="wpb_wrapper">
				<a class="nectar-button large regular accent-color has-icon  wpb_animate_when_almost_visible wpb_bounce bounce regular-button"  style="margin-top: 40px; color: #ffffff; "  href="https://www.asapdevelopers.com/react-native-san-francisco/" data-color-override="false" data-hover-color-override="false" data-hover-text-color-override="#fff"><span>App Development Company</span><i style="color: #ffffff;"  class="icon-button-arrow"></i></a>
			</div> 
		</div>
	</div> 
</div></div>
<p><!-- /wp:paragraph --></p><p>The post <a rel="nofollow" href="https://www.asapdevelopers.com/react-native-codepush-introduction/">React Native CodePush introduction</a> appeared first on <a rel="nofollow" href="https://www.asapdevelopers.com">asap developers</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Progressive Web Apps vs Native Apps</title>
		<link>https://www.asapdevelopers.com/progressive-web-apps-vs-native-apps/</link>
		
		<dc:creator><![CDATA[Germán Gardiol]]></dc:creator>
		<pubDate>Thu, 17 Oct 2019 15:25:35 +0000</pubDate>
				<category><![CDATA[Progressive Web App]]></category>
		<guid isPermaLink="false">https://www.asapdevelopers.com/?p=10250</guid>

					<description><![CDATA[<p>Progressive Web Apps vs Native Apps As developers, we always try to find resources and ways to make implementing functionalities, as well as testing and launching an application easier for...</p>
<p>The post <a rel="nofollow" href="https://www.asapdevelopers.com/progressive-web-apps-vs-native-apps/">Progressive Web Apps vs Native Apps</a> appeared first on <a rel="nofollow" href="https://www.asapdevelopers.com">asap developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2><strong>Progressive Web Apps vs Native Apps</strong></h2>
<p>As developers, we always try to find resources and ways to make implementing functionalities, as well as testing and launching an application easier for us. The greatest boom in recent years has undoubtedly been in the development of mobile applications. Since 2007, when the iPhone was launched, Steve Jobs introduced the idea of being able to run applications developed in Ajax and HTML5 that were a standard for the iPhone at that time. However, when the concept of the App Store appeared, it became very popular, leaving all of those ideas behind. With that in mind, today, we’ll like to take a look at what Progressive Web Applications (PWA) have to offer and where they stand in comparison to native apps.</p>





<h2><strong>What is a PWA or Progressive Web App?</strong></h2>



<p>A <a href="https://www.asapdevelopers.com/whatis-pwa-progressive-web-app/">Progressive Web Application</a> is a web app that runs on an instance of a browser, is able to consume native services of the device, and offers a native user experience. Let’s break down what each part of PWA entails:</p>



<ul>
<li><strong>Progressive: </strong>Works for everyone, on all devices that support modern browsers.</li>
<li><strong>Web: </strong>Uses web standards like Javascript, HTML and CSS, all behind the facility of React to develop a responsive, clean, modern and safe web app.</li>
<li><strong>App: </strong>Runs, works and looks like a native app, including push notifications* and offline and local storage access support.</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/5dDWmdQ4Mf47iTNifyYv-SevK9-PpHn-0ukhFelLzXxYQWjdhZWmfsuO_-FQTtXxLs1szQfDm-5SEwTsZvB-TaIyuVuA4PvHaKPcq6zfFlHu9_pj2Fqs-94bFRYWUf9-lHWZ_Yxx" alt="" /></figure>



<p>Source:<a href="https://developers.google.com"> https://developers.google.com</a></p>





<h2><strong>Why should you choose Progressive Web Apps (PWAs) over Native Apps?</strong></h2>



<p>One of the major advantages for developers is the fact that, to build a PWA, you need to code using React, which also provides the code for the website. So you’ll be developing a multiple platform app, native for Android and iOS, and also a web app, for all the other devices that integrate a modern browser.</p>



<p>Furthermore, React supports the use of CSS style sheets, which allows to easily integrate styles into any environment of the application, even having a main resource configuration file called manifest.json, where you can change variables such as the icon of the application, application mode, wallpapers, title, splash screen, and many others. There is no doubt this means the configuration can be done in a simple and centralized way.</p>



<p>Moreover, if you develop a PWA, you circumvent the fact that often resources such as styles, functionalities and libraries work differently for each platform. Programming and correcting these aspects usually requires a lot of time and money, in addition to the fact that there are often no libraries that support both platforms because the base language for each platform is different.</p>



<p>From this last point, we can conclude that the cost of developing a PWA is significantly lower than that of developing a native application for each platform. Not to mention saving you save the cost of publication in each of the app stores that requires a paid developer account.</p>
<h2><strong>Progressive Web App benefits </strong></h2>



<p>Here’s an overview of all the benefits of developing a Progressive Web App:</p>



<ul>
<li>Looks like a native app.</li>
<li>Easy to develop with ReactJS; lots of documentation available.</li>
<li>Fast and fluid navigation; uses Service Workers.</li>
<li>Offline support, WebSQL database; LocalStorage access; push notifications*; allows access to device&#8217;s hardware, like Camera, Speakers, etc.</li>
<li>Quick development; can see changes in real-time; uses a Node server.</li>
<li>Totally responsive, adapts the design to all screen devices.</li>
<li>Easy app installation by just going to the website and selecting the &#8220;Add to Home&#8221; browser option.</li>
<li>Smaller size than a native app.</li>
<li>Appears on the device’s app manager, providing the possibility to uninstall it, or clean the cache.</li>
<li>Instant deploy: just deploys changes to the production web site and the changes will instantly appear on the PWA.</li>
</ul>



<h2><strong>What are the cons?</strong></h2>



<p>Of course, like every tool, PWAs also have its disadvantages. Let’s take a look at them:</p>



<ul>
<li>Most users usually go directly to the device’s store instead of going to the app website, so it will cause a change of &#8220;routine&#8221; for the users that may be difficult to get used to.</li>
<li>*Push notifications for iOS safari browser are not supported yet.</li>
<li>It is not possible to access specific properties of the hardware of the device and the operating system, meaning you are limited to the basic functions provided by each system.</li>
<li>If the icon, splash screen, app name or description changes, you can&#8217;t get an automatic update from the server. This does not happen with a native app, because just by updating it, you can get a completely new and different app if you want to. </li>
</ul>



<h2><strong><img decoding="async" loading="lazy" class="aligncenter wp-image-10332 size-large" src="https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa-1024x293.jpg" alt="Progressive Web Applications" width="1024" height="293" srcset="https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa-1024x293.jpg 1024w, https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa-300x86.jpg 300w, https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa-768x220.jpg 768w, https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa-610x175.jpg 610w, https://www.asapdevelopers.com/wp-content/uploads/2019/10/blog-pwa.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></strong></h2>
<h2><strong>Conclusion</strong></h2>



<p>To sum up, the choice of technology will depend on the requirements and resources of each client. If the objective and scope of the application to be developed do not require specific functions of the device, but do call for the possibility of web access and include a tight budget, the process of analyzing alternatives will probably lead you to develop a PWA as the best option for the client. On the other hand, if your client requires considerable fluidity with animations, access to specific resources of the device—such as the processing of data and content—, or access to specific properties of the hardware of the device, and has a flexible budget, the best option will without a doubt be developing a native application.</p>



<p>For either case, we recommend learning how to use React, React Native, and taking full advantage of them. ReactJS allows you to easily develop websites and PWAs. And, if you want to develop native applications, you should use React Native, whose code and implementation is very similar to ReactJS.</p>
<p>&nbsp;</p>

		<div id="fws_693eb6c47c8bd"  data-column-margin="default" data-midnight="dark"  data-bg-mobile-hidden="" class="wpb_row vc_row-fluid vc_row standard_section "  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="row-bg"  style=""></div></div><div class="row-bg-overlay" ></div></div><div class="col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding"  data-t-w-inherits="default" data-border-radius="none" data-shadow="none" data-border-animation="" data-border-animation-delay="" data-border-width="none" data-border-style="solid" data-border-color="" data-bg-cover="" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-hover-bg="" data-hover-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-bg-overlay-wrap" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
			<div class="wpb_wrapper">
				<a class="nectar-button large regular accent-color has-icon  wpb_animate_when_almost_visible wpb_bounce bounce regular-button"  style="margin-top: 40px; color: #ffffff; "  href="https://www.asapdevelopers.com/web-mobile-app-san-francisco/" data-color-override="false" data-hover-color-override="false" data-hover-text-color-override="#fff"><span>Learn More About Our Services</span><i style="color: #ffffff;"  class="icon-button-arrow"></i></a>
			</div> 
		</div>
	</div> 
</div></div>



<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.asapdevelopers.com/progressive-web-apps-vs-native-apps/">Progressive Web Apps vs Native Apps</a> appeared first on <a rel="nofollow" href="https://www.asapdevelopers.com">asap developers</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
