{"id":5426,"date":"2021-02-09T14:43:01","date_gmt":"2021-02-09T14:43:01","guid":{"rendered":"https:\/\/www.folio3.com\/mobile\/?p=5426"},"modified":"2021-02-09T14:52:33","modified_gmt":"2021-02-09T14:52:33","slug":"over-the-air-updates-in-react-native","status":"publish","type":"post","link":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/","title":{"rendered":"Over The Air Updates in React-Native"},"content":{"rendered":"\n<p>Deploying a new build is always a hassle and time-consuming task. Consider a scenario QA reports a bug and all you need to do to fix the bug is just add a single line. However, you need to go through a complete build process which takes about forty minutes even if you have <a href=\"https:\/\/fastlane.tools\/\">Fastlane<\/a> configured. <\/p>\n\n\n\n<p>The problem becomes worst when the application is in production, and a bug is encountered. Then you do not only have to go through the complete build process and upload a new build on Play Store and App Store but also wait for at least a day till the app is reviewed and is live and then the users will have to download the updated version. <\/p>\n\n\n\n<p>To address all the above-mentioned issues and to make deploying part easier, a service called <a href=\"https:\/\/microsoft.github.io\/code-push\/\">Code Push<\/a> comes to help. It is a cloud service from <a href=\"https:\/\/appcenter.ms\/apps\">Microsoft Visual Studio App Center<\/a>, that acts as a central repository where developers can publish certain updates.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Setting up Code-Push<\/h4>\n\n\n\n<p>To start with Code Push you need to create an account on Visual Studio App Center.<\/p>\n\n\n\n<p>Along with Code Push, Visual Studio App Center brings together multiple common services into a DevOps cloud solution. Developers use App Center to Build, Test, and Distribute applications. Once the app&#8217;s deployed, developers monitor the status and usage of the app using the Analytics and Diagnostics services.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Create an app<\/strong><\/h4>\n\n\n\n<p>When you add a new app in App Center, you need to create a new app for each platform, one app for Android, one app for iOS. After you have created an app, in a sidebar, go to Distribute &gt; Code Push, there you will have a list of all Code Push releases you have created along with the release type &#8211; Production or Staging.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Setting up Client SDKs<\/strong><\/h4>\n\n\n\n<p>You manage most of CodePush&#8217;s functionality using the App Center CLI. To install the CLI, open a terminal window or command prompt and execute the following command:<\/p>\n\n\n\n<p><em><code>npm install -g appcenter-cli<\/code><\/em><\/p>\n\n\n\n<p>Execute the following command for <code>Code-Pushify<\/code> your current <code>react-native<\/code> app.<\/p>\n\n\n\n<p><em><code>npm install --save react-native-code-push<\/code><\/em><\/p>\n\n\n\n<p>After installing the NPM package, you need to install the native module, so follow the <a href=\"https:\/\/docs.microsoft.com\/en-us\/appcenter\/distribution\/codepush\/rn-get-started#ios-setup\">iOS setup and Android setup<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>For React Native versions above 0.60<\/strong><\/h4>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>iOS:<\/strong><\/h3>\n\n\n\n<p>In <code>AppDelegate.m<\/code> file:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><em><code>#import &lt;CodePush\/CodePush.h&gt;<\/code><\/em><\/li><li>Find: <br> <code>return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];<\/code><\/li><li>Replace it with: <br>&nbsp; <code>return [CodePush bundleURL];<\/code><\/li><\/ol>\n\n\n\n<p>This is how <code>sourceURLForBridge<\/code> method should look like<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n{\n  #if DEBUG\n    return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n  #else\n    return [CodePush bundleURL];\n  #endif\n}<\/code><\/pre>\n\n\n\n<p>4- Add Code push deployment key in<code> Info.plist<\/code> from <code>Distribute &gt; Code Push<\/code> and go to settings to find the key of the release type.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;key>CodePushDeploymentKey&lt;\/key>\n&lt;string>$(CODEPUSH_KEY)&lt;\/string><\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>ANDROID:<\/strong><\/h3>\n\n\n\n<p>1- In <code>android\/settings.gradle<\/code> add the following lines at the end of the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>include ':app', ':react-native-code-push'\nproject(':react-native-code-push').projectDir = new File(rootProject.projectDir, '..\/node_modules\/react-native-code-push\/android\/app')<\/code><\/pre>\n\n\n\n<p>2- In your <code>android\/app\/build.gradle<\/code> file, add the <code>codepush.gradle<\/code> file as an additional build task definition underneath <code>react.gradle<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\napply from: \"..\/..\/node_modules\/react-native\/react.gradle\"\napply from: \"..\/..\/node_modules\/react-native-code-push\/android\/codepush.gradle\"\n...<\/code><\/pre>\n\n\n\n<p><strong>3- Update MainApplication.java:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n\/\/ 1. Import the plugin class.\nimport com.microsoft.codepush.react.CodePush;\npublic class MainApplication extends Application implements ReactApplication {\n    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {\n        ...\n        \/\/ 2. Override the getJSBundleFile method to let\n        \/\/ the CodePush runtime determine where to get the JS\n        \/\/ bundle location from on each app start\n        @Override\n        protected String getJSBundleFile() {\n            return CodePush.getJSBundleFile();\n        }\n    };\n}<\/code><\/pre>\n\n\n\n<p><strong>4- Add Deployment Key in strings.xml:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;resources>\n     &lt;string name=\"app_name\">AppName&lt;\/string>\n     &lt;string moduleConfig=\"true\" name=\"CodePushDeploymentKey\">DeploymentKey&lt;\/string>\n &lt;\/resources><\/code><\/pre>\n\n\n\n<p><strong>Using Code-Push plugin:&nbsp;<\/strong><\/p>\n\n\n\n<p>Wrap your root component with the CodePush higher-order component:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import codePush from 'react-native-code-push';\nlet App = () => {\n . . .\n}\n \nApp = codePush(App);\nexport default App;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Releasing updates:<br><\/strong>Add the following scripts in <code>package.json<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"code-push-ios\": \"appcenter codepush release-react -a &lt;ownerName>\/MyApp-iOS -d Staging\",\n\"code-push-android\": \"appcenter codepush release-react -a &lt;ownerName>\/MyApp-Android -d Staging\"<\/code><\/pre>\n\n\n\n<p>Execute <code><em>npm<\/em> <em>run code-push-ios<\/em><\/code> and<em> <code>npm run code-push-android<\/code> <\/em>to updated react native app over the app. <\/p>\n\n\n\n<p>Once these steps are complete, all users running your app will receive the update. Moreover, release updates will be visible in the CodePush dashboard. You can go to a specific build and turn on the required-update to make sure that the new code is installed as soon as it\u2019s downloaded from the server or else it will be installed and will be visible the next time app is opened.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/UB2nk95Z-vPVAk6fgcZSmjeVk8mrcXQG4uUQKC3s5XG4KgroY0mCludvy8tZcEjCwtHs_0Wl1prS31t_Ln1KEDnA5RWi9j551tFH-BlHEbQVmVKZeyShEDvKCcUEui5cuhWf9pLi\" alt=\"\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Conclusion:<\/strong><\/h4>\n\n\n\n<p>Code-Push is a powerful tool that helps in seamless deployments and both, Google Play Store and App Store permit using it. Even though this is an &#8220;abstract&#8221; way to apply updates across devices, Android does not have a specific guideline for this, but Apple does. You can find more info in the <a href=\"https:\/\/github.com\/Microsoft\/react-native-code-push#store-guideline-compliance\">Store guideline compliance<\/a>.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deploying a new build is always a hassle and time-consuming task. Consider a scenario QA reports a bug and all you need to do to fix the bug is just add a single line. However, you need to go through a complete build process which takes about forty minutes even if you have Fastlane configured. &hellip; <a href=\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Over The Air Updates in React-Native&#8221;<\/span><\/a><\/p>\n","protected":false},"author":37,"featured_media":5445,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[50],"tags":[],"class_list":["post-5426","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-react-native"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Over The Air Updates in React-Native - Mobile App Development Services<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Over The Air Updates in React-Native - Mobile App Development Services\" \/>\n<meta property=\"og:description\" content=\"Deploying a new build is always a hassle and time-consuming task. Consider a scenario QA reports a bug and all you need to do to fix the bug is just add a single line. However, you need to go through a complete build process which takes about forty minutes even if you have Fastlane configured. &hellip; Continue reading &quot;Over The Air Updates in React-Native&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\" \/>\n<meta property=\"og:site_name\" content=\"Mobile App Development Services\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-09T14:43:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-09T14:52:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Noc Folio3\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Noc Folio3\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\"},\"author\":{\"name\":\"Noc Folio3\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/0b6e4f68efbd12d222ac9422766c61eb\"},\"headline\":\"Over The Air Updates in React-Native\",\"datePublished\":\"2021-02-09T14:43:01+00:00\",\"dateModified\":\"2021-02-09T14:52:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\"},\"wordCount\":599,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg\",\"articleSection\":[\"React Native\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\",\"url\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\",\"name\":\"Over The Air Updates in React-Native - Mobile App Development Services\",\"isPartOf\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg\",\"datePublished\":\"2021-02-09T14:43:01+00:00\",\"dateModified\":\"2021-02-09T14:52:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage\",\"url\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg\",\"contentUrl\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg\",\"width\":640,\"height\":426,\"caption\":\"Air Updates in React Native\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.folio3.com\/mobile\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Over The Air Updates in React-Native\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#website\",\"url\":\"https:\/\/www.folio3.com\/mobile\/\",\"name\":\"Mobile App Development Services\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.folio3.com\/mobile\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#organization\",\"name\":\"Mobile App Development Services\",\"url\":\"https:\/\/www.folio3.com\/mobile\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2020\/12\/folio3-mobile.png\",\"contentUrl\":\"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2020\/12\/folio3-mobile.png\",\"width\":210,\"height\":50,\"caption\":\"Mobile App Development Services\"},\"image\":{\"@id\":\"https:\/\/www.folio3.com\/mobile\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/0b6e4f68efbd12d222ac9422766c61eb\",\"name\":\"Noc Folio3\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g\",\"caption\":\"Noc Folio3\"},\"url\":\"https:\/\/www.folio3.com\/mobile\/blog\/author\/noc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Over The Air Updates in React-Native - Mobile App Development Services","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/","og_locale":"en_US","og_type":"article","og_title":"Over The Air Updates in React-Native - Mobile App Development Services","og_description":"Deploying a new build is always a hassle and time-consuming task. Consider a scenario QA reports a bug and all you need to do to fix the bug is just add a single line. However, you need to go through a complete build process which takes about forty minutes even if you have Fastlane configured. &hellip; Continue reading \"Over The Air Updates in React-Native\"","og_url":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/","og_site_name":"Mobile App Development Services","article_published_time":"2021-02-09T14:43:01+00:00","article_modified_time":"2021-02-09T14:52:33+00:00","og_image":[{"width":640,"height":426,"url":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg","type":"image\/jpeg"}],"author":"Noc Folio3","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Noc Folio3","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#article","isPartOf":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/"},"author":{"name":"Noc Folio3","@id":"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/0b6e4f68efbd12d222ac9422766c61eb"},"headline":"Over The Air Updates in React-Native","datePublished":"2021-02-09T14:43:01+00:00","dateModified":"2021-02-09T14:52:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/"},"wordCount":599,"commentCount":0,"publisher":{"@id":"https:\/\/www.folio3.com\/mobile\/#organization"},"image":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg","articleSection":["React Native"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/","url":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/","name":"Over The Air Updates in React-Native - Mobile App Development Services","isPartOf":{"@id":"https:\/\/www.folio3.com\/mobile\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage"},"image":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg","datePublished":"2021-02-09T14:43:01+00:00","dateModified":"2021-02-09T14:52:33+00:00","breadcrumb":{"@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#primaryimage","url":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg","contentUrl":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2021\/02\/Air-Updates-in-React-Native.jpg","width":640,"height":426,"caption":"Air Updates in React Native"},{"@type":"BreadcrumbList","@id":"https:\/\/www.folio3.com\/mobile\/blog\/over-the-air-updates-in-react-native\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.folio3.com\/mobile\/"},{"@type":"ListItem","position":2,"name":"Over The Air Updates in React-Native"}]},{"@type":"WebSite","@id":"https:\/\/www.folio3.com\/mobile\/#website","url":"https:\/\/www.folio3.com\/mobile\/","name":"Mobile App Development Services","description":"","publisher":{"@id":"https:\/\/www.folio3.com\/mobile\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.folio3.com\/mobile\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.folio3.com\/mobile\/#organization","name":"Mobile App Development Services","url":"https:\/\/www.folio3.com\/mobile\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.folio3.com\/mobile\/#\/schema\/logo\/image\/","url":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2020\/12\/folio3-mobile.png","contentUrl":"https:\/\/www.folio3.com\/mobile\/wp-content\/uploads\/2020\/12\/folio3-mobile.png","width":210,"height":50,"caption":"Mobile App Development Services"},"image":{"@id":"https:\/\/www.folio3.com\/mobile\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/0b6e4f68efbd12d222ac9422766c61eb","name":"Noc Folio3","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.folio3.com\/mobile\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g","caption":"Noc Folio3"},"url":"https:\/\/www.folio3.com\/mobile\/blog\/author\/noc\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/posts\/5426"}],"collection":[{"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/comments?post=5426"}],"version-history":[{"count":4,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/posts\/5426\/revisions"}],"predecessor-version":[{"id":5447,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/posts\/5426\/revisions\/5447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/media\/5445"}],"wp:attachment":[{"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/media?parent=5426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/categories?post=5426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.folio3.com\/mobile\/wp-json\/wp\/v2\/tags?post=5426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}