{"id":6237,"date":"2019-01-09T11:23:58","date_gmt":"2019-01-09T19:23:58","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6237"},"modified":"2025-06-13T19:58:19","modified_gmt":"2025-06-14T02:58:19","slug":"background-sync-couchbase-mobile-ios","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/","title":{"rendered":"Background data sync with Couchbase Mobile on iOS: Tutorial"},"content":{"rendered":"<p>One of the key features of <a href=\"https:\/\/www.couchbase.com\/products\/mobile\/\">Couchbase Mobile<\/a> data platform is the ability to sync data across the <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.1\/index.html\">Couchbase Lite<\/a> enabled mobile clients and the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.1\/getting-started.html\">Sync Gateway<\/a>. The ability to run apps in the background is typical in the mobile application life cycle on <a href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/iPhone\/Conceptual\/iPhoneOSProgrammingGuide\/TheAppLifeCycle\/TheAppLifeCycle.html\">iOS<\/a>, <a href=\"https:\/\/developer.android.com\/guide\/components\/activities\/activity-lifecycle\">Android<\/a> and <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/uwp\/launch-resume\/app-lifecycle\">.Net<\/a> platforms and has several uses, for instance, to reduce initial sync\/startup costs by ensuring that the app is launched with the latest data.<\/p>\n<p>In this post, we will introduce you to a simple tutorial that discusses how you can use iOS <a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/core_app\/managing_your_app_s_life_cycle\/preparing_your_app_to_run_in_the_background\/updating_your_app_with_background_app_refresh\">Background App Refresh<\/a> capability to sync data when in the background. While the tutorial itself is iOS specific, concepts discussed here apply to all of the supported Couchbase Lite platforms.<\/p>\n<h2 id=\"introduction\">Introduction<\/h2>\n<p>Every mobile platform has its own implementation of app backgrounding. In some instances, they may even vary with version of the OS. For instance, among the various options, you have <a href=\"https:\/\/developer.android.com\/training\/run-background-service\/create-service\">Background Services<\/a> on Android, <a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/core_app\/managing_your_app_s_life_cycle\/preparing_your_app_to_run_in_the_background\/updating_your_app_with_background_app_refresh\">Background App Refresh<\/a> on iOS and <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/uwp\/launch-resume\/support-your-app-with-background-tasks\">Background Tasks<\/a> on UWP apps . For these reasons, with some exceptions, backgrounding support is an app level concern and is not built into Couchbase Lite. In other words, the mobile app will have to support the platform\u2019s built-in backgrounding capability and then invoke Couchbase Mobile\u2019s data sync capabilities whenever it gets the opportunity to execute in the background.<\/p>\n<p>It is to be noted that on some platforms, the system uses its discretion to terminate the app when it is in the background. Hence, there are no guarantees that the app will even have an opportunity to run in the background.<\/p>\n<h2 id=\"backgroundingoptionsinios\">Backgrounding Options in iOS<\/h2>\n<h3 id=\"backgroundtask\">Background Task<\/h3>\n<p>Everytime the app is pushed into the background, Couchbase Lite will use the iOS <a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/core_app\/managing_your_app_s_life_cycle\/preparing_your_app_to_run_in_the_background\/extending_your_app_s_background_execution_time\">Background Task<\/a> capability to wrap up ongoing sync before going into idle mode. With the Background Task capability, the system provides the app with a finite amount of time to run in the background to perform critical tasks before suspending it.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/01\/ios_bg_fetch.jpg\" alt=\"\" \/><\/figure>\n<h3 id=\"silentnotifications\">Silent Notifications<\/h3>\n<p>In this mode, your backend system can be configured to send out <a href=\"https:\/\/developer.apple.com\/documentation\/usernotifications\/setting_up_a_remote_notification_server\/pushing_updates_to_your_app_silently\">silent push notifications<\/a> to your apps whenever there is data available to be synced by the clients. Silent push notifications are like regular push notifications except that the end user is not notified. Instead, your app is notified and given the oppportunity to handle the notification. When your app is woken up in this mode, it can do a one-shot replication to sync and pending changes with the remote server.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/01\/ios_bg_silent.jpg\" alt=\"\" \/><\/p>\n<h3 id=\"backgroundapprefresh\">Background App Refresh<\/h3>\n<p><a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/core_app\/managing_your_app_s_life_cycle\/preparing_your_app_to_run_in_the_background\/updating_your_app_with_background_app_refresh\">Background App Refresh<\/a> lets your app run periodically in the background so that it can update its content. Over time, the system learns the usage of your app , will wake up your app at appropriate times and give it some finite amount of time to execute. When your app is woken up in this mode, it can do a one-shot replication to sync and pending changes with the remote server.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/01\/ios_bg_refresh-4.jpg\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"tutorial\">Tutorial<\/h2>\n<p>The tutorial introduced in this post uses Background App Refresh mode and is available <strong><a href=\"https:\/\/docs.couchbase.com\/tutorials\/userprofile\/background-fetch.html\">here<\/a><\/strong>. In this tutorial, you will learn how to &#8211;<\/p>\n<ul>\n<li>Configure your iOS app for Background App Refresh support<\/li>\n<li>Setup your app to do a one-shot sync with Couchbase Sync Gateway while in the background<\/li>\n<\/ul>\n<p>We will be usiing a Swift App as an example of a Couchbase Lite enabled client.<\/p>\n<h3 id=\"appoverview\">App Overview<\/h3>\n<p>We will be working with a simple \u201cUser Profile\u201d app which we introduced in the <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/userprofile_basic.html\">Fundamentals Tutorial<\/a> and extended to support data sync capabilities in the <a href=\"https:\/\/docs.couchbase.com\/tutorials\/userprofile-couchbase-mobile\/sync\/userprofile\/userprofile_sync.html\">Sync Tutorial<\/a>. In the tutorial, we will be extending that app to support data sync when in the background.<br \/>\nThe app does the following<br \/>\n&#8211; Allows users to log in and create or update his\/her user profile information. The user profile view automatically updates every time the profile information changes in the underlying database<br \/>\n&#8211; The user profile information syncs with a remote Sync Gateway which then syncs it over to other devices (subject to access control and routing configurations specified in the sync function)<br \/>\n&#8211; When the app is woken up in the background, it does a one-shot replication with the remote Sync Gateway<\/p>\n<h2 id=\"nextsteps\">Next Steps<\/h2>\n<p>At the end of the tutorial, you should have an understanding of how to sync between your Couchbase Lite enabled iOS apps and Sync Gateway while your app is in the backhround. While we discussed one background mode, you can apply it to Silent Notifications. The concepts apply to other platforms as well.<\/p>\n<p>If\u00a0you have questions or feedback, please leave a comment below or feel free to reach out to me at Twitter\u00a0<a href=\"https:\/\/twitter.com\/rajagp\">@rajagp<\/a>\u00a0or email me at\u00a0<a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>. The\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">Couchbase Forums<\/a> are another good place to reach out with\u00a0questions.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the key features of Couchbase Mobile data platform is the ability to sync data across the Couchbase Lite enabled mobile clients and the Sync Gateway. The ability to run apps in the background is typical in the mobile [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":6236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1810,2366],"tags":[2087,1536,1562,1909],"ppma_author":[8948],"class_list":["post-6237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-mobile","category-sync-gateway","tag-couchbase-mobile-2","tag-ios","tag-replication","tag-swift"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Background data sync with Couchbase Mobile on iOS: Tutorial - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.\" \/>\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.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Background data sync with Couchbase Mobile on iOS: Tutorial\" \/>\n<meta property=\"og:description\" content=\"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-09T19:23:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:58:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"465\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\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.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Background data sync with Couchbase Mobile on iOS: Tutorial\",\"datePublished\":\"2019-01-09T19:23:58+00:00\",\"dateModified\":\"2025-06-14T02:58:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\"},\"wordCount\":789,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg\",\"keywords\":[\"Couchbase Mobile 2.\",\"ios\",\"replication\",\"swift\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Mobile\",\"Sync Gateway\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\",\"name\":\"Background data sync with Couchbase Mobile on iOS: Tutorial - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg\",\"datePublished\":\"2019-01-09T19:23:58+00:00\",\"dateModified\":\"2025-06-14T02:58:19+00:00\",\"description\":\"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg\",\"width\":600,\"height\":465,\"caption\":\"Background App Refresh\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Background data sync with Couchbase Mobile on iOS: Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Background data sync with Couchbase Mobile on iOS: Tutorial - The Couchbase Blog","description":"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.","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.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/","og_locale":"en_US","og_type":"article","og_title":"Background data sync with Couchbase Mobile on iOS: Tutorial","og_description":"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.","og_url":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-01-09T19:23:58+00:00","article_modified_time":"2025-06-14T02:58:19+00:00","og_image":[{"width":600,"height":465,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg","type":"image\/jpeg"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Background data sync with Couchbase Mobile on iOS: Tutorial","datePublished":"2019-01-09T19:23:58+00:00","dateModified":"2025-06-14T02:58:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/"},"wordCount":789,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg","keywords":["Couchbase Mobile 2.","ios","replication","swift"],"articleSection":["Best Practices and Tutorials","Couchbase Mobile","Sync Gateway"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/","url":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/","name":"Background data sync with Couchbase Mobile on iOS: Tutorial - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg","datePublished":"2019-01-09T19:23:58+00:00","dateModified":"2025-06-14T02:58:19+00:00","description":"This simple tutorial discusses how you can use iOS Background App Refresh capability to sync data using Couchbase Mobile when your app is in the background.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/ios_bg_refresh-4.jpg","width":600,"height":465,"caption":"Background App Refresh"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/background-sync-couchbase-mobile-ios\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Background data sync with Couchbase Mobile on iOS: Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Senior Director, Product Management","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=6237"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6237\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/6236"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=6237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=6237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=6237"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=6237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}