{"id":1939,"date":"2015-09-01T16:48:43","date_gmt":"2015-09-01T16:48:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1939"},"modified":"2023-09-09T03:15:16","modified_gmt":"2023-09-09T10:15:16","slug":"building-beacon-apps-with-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/building-beacon-apps-with-couchbase-mobile\/","title":{"rendered":"Creaci\u00f3n de aplicaciones Beacon con Couchbase Mobile"},"content":{"rendered":"<p style=\"text-align:center\">\u00a0<\/p>\n<p>En 2013 Apple Inc. introdujo una tecnolog\u00eda llamada <a href=\"https:\/\/en.wikipedia.org\/wiki\/IBeacon\">iBeacon<\/a> que se ejecuta sobre el protocolo Bluetooth 4.0, tambi\u00e9n conocido como <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bluetooth_low_energy\">Bluetooth de baja energ\u00eda<\/a> o BLE.  Aunque los dispositivos con Bluetooth pueden identificarse a s\u00ed mismos, el proceso suele ser 1 a 1, con un anfitri\u00f3n que se empareja con un dispositivo, como un tel\u00e9fono inteligente que se empareja con unos auriculares Bluetooth.  El iBeacon es simplemente un servicio de difusi\u00f3n que env\u00eda unas pocas piezas preconfiguradas de informaci\u00f3n y puede funcionar en paralelo con otros servicios Bluetooth.  Para el debate, los cuatro par\u00e1metros de inter\u00e9s a la hora de crear aplicaciones beacon a partir de soluciones como <a href=\"https:\/\/estimote.com\/\">Estimote<\/a> o de <a href=\"https:\/\/www.gimbal.com\/\">Gimbal<\/a> son la cadena UUID, un n\u00famero mayor de 16 bits, un n\u00famero menor de 16 bits y un valor de intensidad de se\u00f1al.<\/p>\n<p style=\"text-align:justify\">En iOS7, Apple Inc. proporciona funcionalidades de biblioteca para trabajar con iBeacons y aunque hay 3<sup>rd<\/sup> para otras plataformas, el blog se centrar\u00e1 en iOS.  Combinando las tecnolog\u00edas de Couchbase Mobile, Ed Arenberg y el <a href=\"https:\/\/arenberg@epage.com\">Equipo EPage<\/a> est\u00e1 desarrollando un servicio que hace un uso intensivo de iBeacon y utiliza Couchbase Lite para el almacenamiento local, a la vez que sincroniza los datos entre varios dispositivos mediante Couchbase Sync Gateway.<\/p>\n<p style=\"text-align:justify\">Exploremos ahora los 3 componentes clave de este servicio iBeacon y c\u00f3mo implementar estas caracter\u00edsticas b\u00e1sicas utilizando las tecnolog\u00edas de Couchbase Mobile. Ten en cuenta que todo el c\u00f3digo est\u00e1 escrito en Swift 1.2.<\/p>\n<h3><strong>Guardar datos localmente en el dispositivo en Couchbase Lite<\/strong><\/h3>\n<p>El servicio recopilar\u00e1 primero informaci\u00f3n de las balizas cercanas y registrar\u00e1 la informaci\u00f3n del dispositivo en la base de datos.  Para su exploraci\u00f3n, Apple dispone de una buena cantidad de <a href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/UserExperience\/Conceptual\/LocationAwarenessPG\/RegionMonitoring\/RegionMonitoring.html\">documentaci\u00f3n<\/a> sobre c\u00f3mo localizar y alcanzar iBeacons cercanos.  Para integrar Couchbase Lite en tu aplicaci\u00f3n m\u00f3vil, puedes consultar la p\u00e1gina <a href=\"https:\/\/www.couchbase.com\/blog\/es\/developers\/mobile\/\">Portal para desarrolladores de Couchbase Mobile<\/a> para ver el c\u00f3digo de ejemplo de referencia.\u00a0<\/p>\n<h3><strong>Implantaci\u00f3n de ORM<\/strong><\/h3>\n<p>Haremos que la app guarde objetos en clases nativas e implementaremos un ORM para mapear hacia y desde la representaci\u00f3n de Couchbase.  Cuando la app localice un grupo de iBeacons, se generar\u00e1n sus objetos de clase.  La clase incluye c\u00f3digo para guardar el objeto en Couchbase y para cargarlo desde Couchbase.  Aqu\u00ed est\u00e1 la clase para guardar un iBeacon:<\/p>\n<pre>\r\n<code class=\"language-swift\">\r\n\r\nclass Beacon : EntityDocument {\r\n\r\n    var proximityID = \u201cXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\r\n    var major : Int? = 0\r\n    var minor : Int? = 0\r\n\r\n    override func save() {\r\n        let dict = NSMutableDictionary()\r\n        dict[\"type\"] = \"gbeacon\"\r\n        dict[\"proximityID\"] = proximityID\r\n        dict[\"major\"] = major ?? 0\r\n        dict[\"minor\"] = minor ?? 0\r\n        super.save(dict)\r\n    }\r\n\r\n    override func load(document: CBLDocument) {\r\n        super.load(document)\r\n        proximityID = document.properties[\"proximityID\"] as! String\r\n        major = document.properties[\"major\"] as? Int\r\n        minor = document.properties[\"minor\"] as? Int\r\n    }\r\n}\r\n\r\n\/\/EntityDocument is a base class for various objects:\r\nclass EntityDocument {\r\n    var document : CBLDocument?\r\n    init () {}\r\n    func save(dict: NSDictionary) {\r\n        if document == nil {\r\n            document = Database.sharedDatabase.createDocument(dict, object:self)\r\n        } else {\r\n            var error: NSError?\r\n            var properties = NSMutableDictionary(dictionary: document!.properties)\r\n            properties.addEntriesFromDictionary(dict as [NSObject : AnyObject])\r\n            if document!.putProperties(properties as [NSObject : AnyObject], error: &amp;error) == nil {\r\n                NSLog(\"%@\", error!)\r\n            }\r\n        }\r\n    }\r\n    func load(document: CBLDocument) {\r\n        self.document = document\r\n    }\r\n    func delete() {\r\n        var error : NSError?\r\n        if let doc = document {\r\n            if !doc.deleteDocument(&amp;error) {\r\n                \/\/ Handle Error\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n\/\/Now can create Beacon object from a discovered 'foundBeacon'(CLBeacon iOS object) and save it simply with:\r\nlet beacon = Beacon()\r\nbeacon.proximityID = foundBeacon.proximityUUID\r\nbeacon.major = foundBeacon.major\r\nbeacon.minor = foundBeacon.minor\r\nbeacon.save()\r\n}\r\n<\/code><\/pre>\n<p>\u00a0<\/p>\n<h3><strong>Sincronizaci\u00f3n de datos de balizas<\/strong><\/h3>\n<p>Cuando est\u00e9 conectado a una red, Couchbase Mobile sincronizar\u00e1 los datos utilizando <a href=\"https:\/\/bit.ly\/MobileCBSync\">Pasarela de sincronizaci\u00f3n Couchbase<\/a>.  Esto se maneja autom\u00e1ticamente una vez que configuramos nuestras r\u00e9plicas push y pull, lo que hace muy f\u00e1cil mantener el sistema coordinado.  Podemos a\u00f1adir un m\u00e9todo observador para escuchar el estado de las operaciones push y pull.  Sin embargo, cada dispositivo necesita escuchar los cambios en la base de datos para los que necesita tomar medidas, por lo que podemos a\u00f1adir un observador para una notificaci\u00f3n de cambio de base de datos.  Cuando la base de datos cambia, actualizamos nuestros objetos nativos locales.  Para gestionar la interacci\u00f3n con Couchbase, crea un objeto Database que instancie un singleton.  Los conceptos principales est\u00e1n delineados en el siguiente c\u00f3digo:<\/p>\n<pre>\r\n<code class=\"language-swift\">\r\n\r\nprivate let _DatabaseSharedInstance = Database()\r\n\r\nclass Database {\r\n    var manager: CBLManager = CBLManager.sharedInstance()\r\n    var db: CBLDatabase\r\n    var my_push: CBLReplication\r\n    var my_pull: CBLReplication\r\n\r\n    class var sharedDatabase: Database {\r\n        return _DatabaseSharedInstance\r\n    }\r\n    init() {\r\n        var replication_url = NSURL(string: REPLICATION_URL)\r\n        var error :NSError?\r\n        db = manager.databaseNamed(DATABASE_NAME, error: &amp;error)\r\n\r\n        let push = db.createPushReplication(replication_url)\r\n        let pull = db.createPullReplication(replication_url)\r\n        push?.continuous = true\r\n        pull?.continuous = true\r\n\r\n        my_push = push\r\n        my_pull = pull\r\n\r\n        push.start()\r\n        pull.start()\r\n        \r\n        NSNotificationCenter.defaultCenter().addObserver(self, selector: \"replicationChanged:\", name: kCBLReplicationChangeNotification, object: push)\r\n        NSNotificationCenter.defaultCenter().addObserver(self, selector: \"replicationChanged:\", name: kCBLReplicationChangeNotification, object: pull)\r\n        NSNotificationCenter.defaultCenter().addObserver(self, selector: \"databaseChanged:\", name: kCBLDatabaseChangeNotification, object: db)\r\n    }\r\n\r\n    @objc func databaseChanged(notification: NSNotification) {\r\n        if let changes = notification.userInfo![\"changes\"] as? [CBLDatabaseChange] {\r\n            for change in changes {\r\n                NSLog(\"%@ changed\", change.documentID)\r\n                updateObject(change.documentID)\r\n            }\r\n        }\r\n    }\r\n    @objc func replicationChanged(notification: NSNotification) {\r\n        let active = my_pull.status == CBLReplicationStatus.Active || my_push.status == CBLReplicationStatus.Active\r\n        NSLog(\"%@ in replication changed: %@\", notification.object!.description, active)\r\n        \/\/ Now show a progress indicator:\r\n        if active {\r\n            var progress = 0.0\r\n            let total = my_push.changesCount + my_pull.changesCount\r\n            let completed = my_push.completedChangesCount + my_pull.completedChangesCount\r\n            if total &gt; 0 {\r\n                progress = Double(completed) \/ Double(total);\r\n                NSLog(\"progress: %f\", progress)\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n<\/code><\/pre>\n<p>Estas son las piezas principales que permiten a la aplicaci\u00f3n m\u00f3vil ejecutar actividades locales, como la monitorizaci\u00f3n de balizas cercanas, guardar su estado local y configurar servicios de sincronizaci\u00f3n para coordinar la coherencia de la informaci\u00f3n entre las instancias de la aplicaci\u00f3n.  A partir de ah\u00ed, se pueden desarrollar m\u00e1s funcionalidades y crear servicios sofisticados capaces de sincronizar el estado de una red de aplicaciones. En el pr\u00f3ximo blog exploraremos el uso de beacon y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/developers\/mobile\/\">Couchbase M\u00f3vil<\/a> para ofrecer aplicaciones de localizaci\u00f3n que funcionan sin conexi\u00f3n a la red.<\/p>","protected":false},"excerpt":{"rendered":"<p>\u00a0 In 2013 Apple Inc. introduced a technology called iBeacon that runs on top of Bluetooth 4.0 protocol which is also known as Bluetooth Low Energy or BLE. \u00a0While Bluetooth enabled devices can identify themselves, the process is generally 1 [&hellip;]<\/p>","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8983],"class_list":["post-1939","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building Beacon Apps with Couchbase Mobile - The Couchbase Blog<\/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.couchbase.com\/blog\/es\/building-beacon-apps-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building Beacon Apps with Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"\u00a0 In 2013 Apple Inc. introduced a technology called iBeacon that runs on top of Bluetooth 4.0 protocol which is also known as Bluetooth Low Energy or BLE. \u00a0While Bluetooth enabled devices can identify themselves, the process is generally 1 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/building-beacon-apps-with-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-01T16:48:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-09T10:15:16+00:00\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"Building Beacon Apps with Couchbase Mobile\",\"datePublished\":\"2015-09-01T16:48:43+00:00\",\"dateModified\":\"2023-09-09T10:15:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/\"},\"wordCount\":550,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/\",\"name\":\"Building Beacon Apps with Couchbase Mobile - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-09-01T16:48:43+00:00\",\"dateModified\":\"2023-09-09T10:15:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building Beacon Apps with Couchbase Mobile\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building Beacon Apps with Couchbase Mobile - The Couchbase Blog","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\/es\/building-beacon-apps-with-couchbase-mobile\/","og_locale":"es_MX","og_type":"article","og_title":"Building Beacon Apps with Couchbase Mobile","og_description":"\u00a0 In 2013 Apple Inc. introduced a technology called iBeacon that runs on top of Bluetooth 4.0 protocol which is also known as Bluetooth Low Energy or BLE. \u00a0While Bluetooth enabled devices can identify themselves, the process is generally 1 [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/building-beacon-apps-with-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-09-01T16:48:43+00:00","article_modified_time":"2023-09-09T10:15:16+00:00","author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"Building Beacon Apps with Couchbase Mobile","datePublished":"2015-09-01T16:48:43+00:00","dateModified":"2023-09-09T10:15:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/"},"wordCount":550,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/","name":"Building Beacon Apps with Couchbase Mobile - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-09-01T16:48:43+00:00","dateModified":"2023-09-09T10:15:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/building-beacon-apps-with-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building Beacon Apps with Couchbase Mobile"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/425717456c198fdf9aaa5d7a6d42ad32","name":"William Hoang, Defensor del Desarrollador M\u00f3vil, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"William fue Developer Advocate en el equipo de Mobile Engineering\/Developer Experience de Couchbase. Su amor por el caf\u00e9 y el c\u00f3digo le ha trascendido al mundo de los m\u00f3viles, al tiempo que aprecia las experiencias presenciales fuera de l\u00ednea. Anteriormente, William trabaj\u00f3 en el equipo de Relaciones con Desarrolladores en Twitter, BlackBerry y Microsoft, adem\u00e1s de haber sido ingeniero de Software Embedded GPS en Research In Motion. William se licenci\u00f3 en Ingenier\u00eda El\u00e9ctrica de Software por la Universidad McGill.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","first_name":"William","last_name":"Hoang","user_url":"","author_category":"","description":"William fue Developer Advocate en el equipo de Mobile Engineering\/Developer Experience de Couchbase. Su amor por el caf\u00e9 y el c\u00f3digo le ha trascendido al mundo de los m\u00f3viles, al tiempo que aprecia las experiencias presenciales fuera de l\u00ednea. Anteriormente, William trabaj\u00f3 en el equipo de Relaciones con Desarrolladores en Twitter, BlackBerry y Microsoft, adem\u00e1s de haber sido ingeniero de Software Embedded GPS en Research In Motion. William se licenci\u00f3 en Ingenier\u00eda El\u00e9ctrica de Software por la Universidad McGill."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1939"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1939\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1939"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}