{"id":3063,"date":"2021-02-17T13:15:57","date_gmt":"2021-02-17T13:15:57","guid":{"rendered":"https:\/\/serkanseker.com\/?p=3063"},"modified":"2021-02-23T17:36:30","modified_gmt":"2021-02-23T17:36:30","slug":"xamarin-forms-monkey-cache-data","status":"publish","type":"post","link":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/","title":{"rendered":"Xamarin.Forms Cache Data with MonkeyCache Plugin"},"content":{"rendered":"\n<p>In this article, I will explain how to add a <strong>cache <\/strong>library to your Xamarin.Forms applications with the <strong>MonkeyCache <\/strong>plugin.<\/p>\n\n\n\n<p>In mobile applications, it is important to have permanent data. Because mobile applications are not a web application, they may not always be connected to the internet. In such cases, it is better to show the data with which the user interacted with the last time rather than giving the user the error &#8220;no internet connection&#8221;.<\/p>\n\n\n\n<p>There are several different ways to store data in mobile apps. For example, you can store your data within the application using a local database engine such as SQLite or Realm. However, if you have an application that constantly queries APIs, such as a Weather application, storing the data in the database is not a good solution.<\/p>\n\n\n\n<p>Therefore, it is useful to use a cache library for such applications. Thus, you can keep your data in the cache for a certain period of time and show the cached data to the user even when there is no internet connection.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is the MonkeyCache plugin?<\/h2>\n\n\n\n<p>MonkeyCache is a simple caching library for any .NET application developed by James MonteMagno. The purpose of this plugin is to allow developers to cache data for a limited time.<\/p>\n\n\n\n<p>The data to be cached in the MonkeyCache library is stored in a Barrel. Therefore, before storing data, you must assign an application ID to Barrel.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">Barrel.ApplicationId = \u201cyour_unique_name_here\u201d;<\/code><\/pre>\n\n\n\n<p>Then add the data to the cache.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">Barrel.Current.Add(key, data, expireIn);<\/code><\/pre>\n\n\n\n<p>And then get the data from the cache.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">Barrel.Current.Get&lt;Type of Data you want to get&gt;(url);<\/code><\/pre>\n\n\n\n<p>You can remove the cached data if you wish.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">Barrel.Current.EmptyAll();<\/code><\/pre>\n\n\n\n<p>In this article, I will store the data in the cache I get from the OpenWeatherMap service of the <a href=\"https:\/\/serkanseker.com\/xamarin-forms-openweathermap-rest-api\/\" target=\"_blank\" rel=\"noreferrer noopener\">Weather <\/a>application I developed previously. Follow the steps below in order.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1- Install the MonkeyCache plugin in your project<\/h2>\n\n\n\n<p>First, install the <a href=\"https:\/\/www.nuget.org\/packages\/MonkeyCache.FileStore\/1.5.0-beta\" target=\"_blank\" rel=\"noreferrer noopener\">MonkeyCache.FileStore<\/a> NuGet package in your Xamarin.Forms project.<\/p>\n\n\n\n<p>Type the following code in the Package Manager Console and run it. (<a href=\"https:\/\/serkanseker.com\/install-and-manage-nuget-packages\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install and Manage NuGet Packages<\/a>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Install-Package MonkeyCache.FileStore -Version 1.5.0-beta<\/code><\/pre>\n\n\n\n<p>Alternatively, you can install this plugin from NuGet Package Manager. (<a href=\"https:\/\/serkanseker.com\/install-and-manage-nuget-packages\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install and Manage NuGet Packages<\/a>)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/serkanseker.com\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-NuGet-Package.jpg\" alt=\"Xamarin.Forms Monkey Cache NuGet Package\" class=\"wp-image-3064\"\/><figcaption>Install the MonkeyCache plugin in your project<\/figcaption><\/figure><\/div>\n\n\n\n<p>You do not need to launch it on native platforms to use the MonkeyCache plugin. Simply install the plugin in your Xamarin.Forms project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2 &#8211; Define an ApplicationId to Barrel<\/h2>\n\n\n\n<p>The data to be cached in the MonkeyCache plugin is stored in a Barrel meaning &#8220;barrel&#8221;. Therefore, you must assign the application ID to Barrel before storing data.<\/p>\n\n\n\n<p>Assign an id value as below in the method you query for API.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">public static async Task&lt;OneCallAPI&gt; GetOneCallAPIAsync(double lat, double lon, string units)\n{\n    Barrel.ApplicationId = &quot;WeatherCache&quot;;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3 &#8211; Get data from cache if no internet connection<\/h2>\n\n\n\n<p>Now check the internet connection and whether the cached data has expired. If there is no internet connection and the data in the cache for this url has not expired, return the existing data in the cache with the Get method.<\/p>\n\n\n\n<p>Here I used Xamarin.Essentials to check the internet connection.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">public static async Task&lt;OneCallAPI&gt; GetOneCallAPIAsync(double lat, double lon, string units)\n{\n    Barrel.ApplicationId = &quot;WeatherCache&quot;;\n\n    OneCallAPI weather = new OneCallAPI();\n    string url = String.Format(BASE_URL2, lat, lon, units, OPENWEATHERMAP_API_KEY);\n\n    \/\/check connectivity, if not get data from cache\n    if (Connectivity.NetworkAccess != NetworkAccess.Internet &amp;&amp; !Barrel.Current.IsExpired(key: url))\n    {\n        await Task.Yield();\n        return Barrel.Current.Get&lt;OneCallAPI&gt;(key: url);\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 &#8211; Add data to cache if internet connection is available<\/h2>\n\n\n\n<p>If there is an internet connection, perform an API query with this url. Then, cache the data you get from the API with the Add method.<\/p>\n\n\n\n<p>The <strong>Add()<\/strong> method takes three parameters:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Key<\/strong>: The URL of the web service.<\/li><li><strong>Data<\/strong>: The data returned by the web service.<\/li><li><strong>ExpireIn<\/strong>: The length of time data is kept in the cache.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-csharp\">public static async Task&lt;OneCallAPI&gt; GetOneCallAPIAsync(double lat, double lon, string units)\n{\n    Barrel.ApplicationId = &quot;WeatherCache&quot;;\n\n    OneCallAPI weather = new OneCallAPI();\n    string url = String.Format(BASE_URL2, lat, lon, units, OPENWEATHERMAP_API_KEY);\n\n    \/\/check connectivity, if not get data from cache\n    if (Connectivity.NetworkAccess != NetworkAccess.Internet &amp;&amp; !Barrel.Current.IsExpired(key: url))\n    {\n        await Task.Yield();\n        return Barrel.Current.Get&lt;OneCallAPI&gt;(key: url);\n    }\n    HttpClient httpClient = new HttpClient();\n    var response = await httpClient.GetAsync(url);\n    if (response.IsSuccessStatusCode)\n    {\n        var content = await response.Content.ReadAsStringAsync();\n        var posts = JsonConvert.DeserializeObject&lt;OneCallAPI&gt;(content);\n        \/\/ Add cache\n        Barrel.Current.Add(key: url, data: posts, expireIn: TimeSpan.FromDays(1));\n        weather = posts;\n    }\n    return weather;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5 &#8211; Show your data in XAML<\/h2>\n\n\n\n<p>Finally, show the data you get from the API query in XAML. I explained how to display data in XAML with <a href=\"https:\/\/serkanseker.com\/xamarin-forms-data-binding-context\/\" target=\"_blank\" rel=\"noreferrer noopener\">Data Binding<\/a> operation using <a href=\"https:\/\/serkanseker.com\/xamarin-forms-mvvm-pattern\/\" target=\"_blank\" rel=\"noreferrer noopener\">MVVM model<\/a> in <a href=\"https:\/\/serkanseker.com\/xamarin-forms-openweathermap-rest-api\/\" target=\"_blank\" rel=\"noreferrer noopener\">Weather <\/a>application. I will not go back here.<\/p>\n\n\n\n<p>After completing all the steps, run your application. There are two screenshots in my application as below.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>While my device was connected to the internet, I was able to get data from the API query and cached this data to Barrel.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/serkanseker.com\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Enable-Internet-Connection-473x1024.jpg\" alt=\"Xamarin.Forms Monkey Cache Enable Internet Connection\" class=\"wp-image-3067\" width=\"237\" height=\"512\"\/><figcaption>While the device has access to the internet, it received data from the API and cached it<\/figcaption><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>I then disconnected my device from the internet and ran the application again. This time, because there was no internet connection, the application could not query the API and showed the data in the cache.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/serkanseker.com\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Disable-Internet-Connection-473x1024.jpg\" alt=\"Xamarin.Forms Monkey Cache Disable Internet Connection\" class=\"wp-image-3068\" width=\"237\" height=\"512\"\/><figcaption>When the device had no access to the internet, it retrieved data from the cache<\/figcaption><\/figure><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>In this article, I explained how to add a <strong>cache <\/strong>library to your Xamarin.Forms applications with the <strong>MonkeyCache <\/strong>plugin. I hope it was helpful.<\/p>\n\n\n\n<p>If you\u2019re still not sure what to do, or if you got any errors, then I suggest you use the comment section below and let me know! I am here to help!<\/p>\n\n\n\n<p><strong>Also, share this blog post on social media and help more people learn.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In mobile applications, it is important to have permanent data. Because mobile applications are not a web application, they may not always be connected to the internet. In such cases, it is better to show the data with which the user interacted with the last time rather than giving the user the error &#8220;no internet connection&#8221;.<\/p>\n","protected":false},"author":1,"featured_media":270,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"categories":[572,21,39],"tags":[574,570,4,5],"class_list":["post-3063","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nuget","category-xamarin","category-xamarin-forms","tag-monkeycache","tag-nuget","tag-xamarin","tag-xamarin-forms"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR\" \/>\n<meta property=\"og:description\" content=\"In mobile applications, it is important to have permanent data. Because mobile applications are not a web application, they may not always be connected to the internet. In such cases, it is better to show the data with which the user interacted with the last time rather than giving the user the error &quot;no internet connection&quot;.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\" \/>\n<meta property=\"og:site_name\" content=\"Serkan Seker TR\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-17T13:15:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-23T17:36:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1\" \/>\n\t<meta property=\"og:image:height\" content=\"1\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"serkanadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"serkanadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\"},\"author\":{\"name\":\"serkanadmin\",\"@id\":\"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5\"},\"headline\":\"Xamarin.Forms Cache Data with MonkeyCache Plugin\",\"datePublished\":\"2021-02-17T13:15:57+00:00\",\"dateModified\":\"2021-02-23T17:36:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\"},\"wordCount\":783,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg\",\"keywords\":[\"MonkeyCache\",\"NuGet\",\"xamarin\",\"xamarin.forms\"],\"articleSection\":[\"NuGet\",\"Xamarin\",\"Xamarin.Forms\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\",\"url\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\",\"name\":\"Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR\",\"isPartOf\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg\",\"datePublished\":\"2021-02-17T13:15:57+00:00\",\"dateModified\":\"2021-02-23T17:36:30+00:00\",\"author\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5\"},\"breadcrumb\":{\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage\",\"url\":\"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg\",\"contentUrl\":\"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/serkanseker.com\/tr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Xamarin.Forms Cache Data with MonkeyCache Plugin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/serkanseker.com\/tr\/#website\",\"url\":\"https:\/\/serkanseker.com\/tr\/\",\"name\":\"Serkan Seker TR\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/serkanseker.com\/tr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5\",\"name\":\"serkanadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93ddc1f96117bf468976afe93a077eda77de96bcdb48dc749903598a546786a3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93ddc1f96117bf468976afe93a077eda77de96bcdb48dc749903598a546786a3?s=96&d=mm&r=g\",\"caption\":\"serkanadmin\"},\"sameAs\":[\"https:\/\/serkanseker.com\"],\"url\":\"https:\/\/serkanseker.com\/tr\/author\/serkanadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR","og_description":"In mobile applications, it is important to have permanent data. Because mobile applications are not a web application, they may not always be connected to the internet. In such cases, it is better to show the data with which the user interacted with the last time rather than giving the user the error \"no internet connection\".","og_url":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/","og_site_name":"Serkan Seker TR","article_published_time":"2021-02-17T13:15:57+00:00","article_modified_time":"2021-02-23T17:36:30+00:00","og_image":[{"url":"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg","width":1,"height":1,"type":"image\/jpeg"}],"author":"serkanadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"serkanadmin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#article","isPartOf":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/"},"author":{"name":"serkanadmin","@id":"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5"},"headline":"Xamarin.Forms Cache Data with MonkeyCache Plugin","datePublished":"2021-02-17T13:15:57+00:00","dateModified":"2021-02-23T17:36:30+00:00","mainEntityOfPage":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/"},"wordCount":783,"commentCount":0,"image":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage"},"thumbnailUrl":"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg","keywords":["MonkeyCache","NuGet","xamarin","xamarin.forms"],"articleSection":["NuGet","Xamarin","Xamarin.Forms"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/","url":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/","name":"Xamarin.Forms Cache Data with MonkeyCache Plugin - Serkan Seker TR","isPartOf":{"@id":"https:\/\/serkanseker.com\/tr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage"},"image":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage"},"thumbnailUrl":"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg","datePublished":"2021-02-17T13:15:57+00:00","dateModified":"2021-02-23T17:36:30+00:00","author":{"@id":"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5"},"breadcrumb":{"@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#primaryimage","url":"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg","contentUrl":"https:\/\/serkanseker.com\/tr\/wp-content\/uploads\/2021\/02\/Xamarin-Forms-Monkey-Cache-Data.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/serkanseker.com\/tr\/xamarin-forms-monkey-cache-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/serkanseker.com\/tr\/"},{"@type":"ListItem","position":2,"name":"Xamarin.Forms Cache Data with MonkeyCache Plugin"}]},{"@type":"WebSite","@id":"https:\/\/serkanseker.com\/tr\/#website","url":"https:\/\/serkanseker.com\/tr\/","name":"Serkan Seker TR","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/serkanseker.com\/tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/841fcc69b248e08e52c4190963caeaf5","name":"serkanadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/serkanseker.com\/tr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/93ddc1f96117bf468976afe93a077eda77de96bcdb48dc749903598a546786a3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93ddc1f96117bf468976afe93a077eda77de96bcdb48dc749903598a546786a3?s=96&d=mm&r=g","caption":"serkanadmin"},"sameAs":["https:\/\/serkanseker.com"],"url":"https:\/\/serkanseker.com\/tr\/author\/serkanadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/posts\/3063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/comments?post=3063"}],"version-history":[{"count":0,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/posts\/3063\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/media\/270"}],"wp:attachment":[{"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/media?parent=3063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/categories?post=3063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serkanseker.com\/tr\/wp-json\/wp\/v2\/tags?post=3063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}