CINXE.COM

Create Dynamic Links with C++  |  Firebase

<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://firebase.google.com/docs/dynamic-links/cpp/create","20201001055333","https://web.archive.org/","web","/_static/", "1601531613"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email"> <meta property="og:site_name" content="Firebase"> <meta property="og:type" content="website"> <meta name="theme-color" content="#039be5"> <meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/web/20201001055333/https://firebase.google.com/_pwa/firebase/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20201001055333/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201001055333/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201001055333/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201001055333/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201001055333/https://www.google-analytics.com/" crossorigin> <link rel="stylesheet" href="//web.archive.org/web/20201001055333cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"> <link rel="stylesheet" href="https://web.archive.org/web/20201001055333cs_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/css/app.css"> <noscript> </noscript> <link rel="shortcut icon" href="https://web.archive.org/web/20201001055333im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20201001055333im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20201001055333/https://firebase.google.com/docs/dynamic-links/cpp/create"><link rel="search" type="application/opensearchdescription+xml" title="Firebase" href="https://web.archive.org/web/20201001055333/https://firebase.google.com/s/opensearch.xml"> <title>Create Dynamic Links with C++ &nbsp;|&nbsp; Firebase</title> <meta property="og:title" content="Create Dynamic Links with C++  |  Firebase"> <meta property="og:url" content="https://web.archive.org/web/20201001055333/https://firebase.google.com/docs/dynamic-links/cpp/create"> <meta property="og:locale" content="en"> <meta name="gtm_var" data-key="docType" data-value="get-started"> </head> <body type="article" theme="firebase-theme" class="" layout="docs" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header> <div class="devsite-header--inner"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20201001055333/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20201001055333im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab> <a href="/web/20201001055333/https://firebase.google.com/products" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="products" data-category="Site-Wide Custom Events" data-label="Tab: Products"> Products </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/use-cases" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="useCases" data-category="Site-Wide Custom Events" data-label="Tab: Use Cases"> Use Cases </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/pricing" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="pricing" data-category="Site-Wide Custom Events" data-label="Tab: Pricing"> Pricing </a> </tab> <tab active> <a href="/web/20201001055333/https://firebase.google.com/docs" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="docs" aria-label="Docs, selected" data-category="Site-Wide Custom Events" data-label="Tab: Docs"> Docs </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/community" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="community" data-category="Site-Wide Custom Events" data-label="Tab: Community"> Community </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/support" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="support" data-category="Site-Wide Custom Events" data-label="Tab: Support"> Support </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Firebase" tenant-name="Firebase"> <form class="devsite-search-form" action="https://web.archive.org/web/20201001055333/https://firebase.google.com/s/results" method="GET"> <div class="devsite-search-container"> <div class="devsite-searchbox"> <input aria-label="Search" aria-haspopup="false" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value=""> <div class="devsite-search-image material-icons" aria-hidden="true"></div> </div> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//web.archive.org/web/20201001055333/https://console.firebase.google.com/" data-category="Site-Wide Custom Events" data-label="Site header link"> Go to console </a> <devsite-user fp-auth id="devsite-user"></devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row"> <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> <a href="/web/20201001055333/https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1"> Documentation </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab> <a href="/web/20201001055333/https://firebase.google.com/docs" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="overview" data-category="Site-Wide Custom Events" data-label="Tab: Overview"> Overview </a> </tab> <tab active> <a href="/web/20201001055333/https://firebase.google.com/docs/guides" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="guides" aria-label="Guides, selected" data-category="Site-Wide Custom Events" data-label="Tab: Guides"> Guides </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/docs/reference" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="reference" data-category="Site-Wide Custom Events" data-label="Tab: Reference"> Reference </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/docs/samples" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="samples" data-category="Site-Wide Custom Events" data-label="Tab: Samples"> Samples </a> </tab> <tab> <a href="/web/20201001055333/https://firebase.google.com/docs/libraries" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="libraries" data-category="Site-Wide Custom Events" data-label="Tab: Libraries"> Libraries </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20201001055333/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20201001055333im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/products" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="products"> <span class="devsite-nav-text" tooltip> Products </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/use-cases" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Cases" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="useCases"> <span class="devsite-nav-text" tooltip> Use Cases </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/pricing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="pricing"> <span class="devsite-nav-text" tooltip> Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="docs"> <span class="devsite-nav-text" tooltip> Docs </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="overview"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/guides" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guides" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="guides"> <span class="devsite-nav-text" tooltip menu="_book"> Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="samples"> <span class="devsite-nav-text" tooltip> Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/libraries" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="libraries"> <span class="devsite-nav-text" tooltip> Libraries </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="community"> <span class="devsite-nav-text" tooltip> Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201001055333/https://firebase.google.com/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="support"> <span class="devsite-nav-text" tooltip> Support </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20201001055333/https://console.firebase.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to console" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="goToConsole"> <span class="devsite-nav-text" tooltip> Go to console </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/guides" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Guides</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Get started with Firebase</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Add Firebase to an app</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ios/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/android/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/web/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Add Firebase to a game</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/games/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cpp/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/unity/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admin/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add Firebase to a server</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use Firebase with a framework</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/flutter/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Flutter</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up projects programmatically</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Manage your Firebase projects</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/learn-more" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Firebase projects</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Select locations for your project</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/multiprojects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure multiple projects</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/pwa" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Firebase in PWAs</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export project data to BigQuery</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/manage-installations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Firebase installations</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Manage projects programmatically</span></div></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the REST API</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use the Admin SDK</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/admin/node/admin.projectManagement" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Node.js</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/projectmanagement/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Java</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/admin/python/firebase_admin.project_management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Python</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/provisioning/configure-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure OAuth identity providers for Firebase Auth</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Manage project access (IAM)</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Roles</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-primitive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Owner, Editor, Viewer roles</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Firebase predefined roles</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-predefined" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-predefined-all-products" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Firebase-level roles</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-predefined-category" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Product-category roles</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-predefined-product" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Product-level roles</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/roles-custom" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Custom roles</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/projects/iam/permissions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Permissions</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Prototype and test with Emulator Suite</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Connect your app and prototype</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite/connect_and_prototype" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite/connect_rtdb" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Realtime Database emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite/connect_firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Cloud Firestore emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite/connect_functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Cloud Functions emulator</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/emulator-suite/install_and_configure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Install, configure and integrate</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Analytics</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/user-properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/debugview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debug Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/screenviews" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Track Screens</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/userid" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set a User ID</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/measure-ecommerce" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Measure Ecommerce</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/webview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use in a WebView</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/configure-data-collection" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure Data Collection and Usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Error Codes</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/cpp/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/cpp/properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/unity/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/analytics/unity/properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Extensions</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Use an extension in your project</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/extensions/overview-use-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/extensions/install-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Install an extension</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/extensions/manage-installed-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage installed extensions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/extensions/permissions-granted-to-extension" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Permissions granted to an extension</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Develop</span></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Authentication</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/where-to-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Where do I start?</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Users in Firebase Projects</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/game-center" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Game Center Sign-in</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/single-sign-on" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enabling cross-app authentication with shared iOS Keychain</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/ios/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started with the Firebase SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/android/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/cordova" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>OAuth Sign-In for Cordova</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/auth-state-persistence" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Auth State Persistence</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/web/service-worker-sessions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Service Worker Sessions</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-in</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/cpp/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-in</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/unity/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/import-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Import Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/create-custom-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Custom Tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/verify-id-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Verify ID Tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/manage-sessions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage User Sessions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/manage-cookies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Session Cookies</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/custom-claims" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Control Access with Custom Claims</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/email-action-links" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Generating Email Action Links</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/admin/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Errors</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admin/migrate-admin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migration Guide</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/custom-email-handler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize the Email Action Handler</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/case-studies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Case Studies</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/auth/limits" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage Limits</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Realtime Database</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rtdb-vs-firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Choose a Database</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/ios/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/ios/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/ios/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/ios/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/android/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/android/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/android/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/android/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/web/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/web/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/web/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/web/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/admin/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/admin/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/admin/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/admin/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>REST</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authenticate REST Requests</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/cpp/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/cpp/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/cpp/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/unity/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/unity/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/unity/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Security &amp; Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/security/core-syntax" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/security/indexing-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Index Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/rest/app-management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Rules via REST</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Usage and Performance</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/billing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Billing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/limits" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Realtime Database Limits</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/monitor-usage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor Database Usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/monitor-performance" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor Database Performance</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/sharding" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Scale with Multiple Databases</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/profile" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Profile Your Database</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/usage/optimize" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Optimize Database Performance</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/backups" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Automated Backups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/database/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video series: Firebase for SQL Developers</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Cloud Firestore</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/quickstart" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Understand Cloud Firestore</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/rtdb-vs-firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Compare Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/data-model" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data model</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/data-types" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data types</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/client/libraries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>SDKs and client libraries</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/index-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Index types</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Database locations</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Add and manage data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/add-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/transactions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Transactions and batched writes</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/transaction-data-contention" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data contention in transaction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/delete-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/using-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Cloud Firestore with the Firebase Console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/export-import" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export and import data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/move-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Move data between projects</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Read data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/get-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get data once</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/listen" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Listen for realtime updates</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/queries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Perform simple and compound queries</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/order-limit-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Order and limit data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/query-cursors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Paginate data with query cursors</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/manage-data/enable-offline" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access data offline</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/query-data/indexing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage indexes</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Secure and validate data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/rules-structure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Writing conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/insecure-rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Fix insecure rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/test-rules-emulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/security/rules-query" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Securely query data</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Solutions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/aggregation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Aggregation Queries</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/counters" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Distributed counters</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/search" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Full-text search</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/presence" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build presence</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/role-based-access" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Secure data access for users and groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/delete-collections" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete data with a callable Cloud Function</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/schedule-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Schedule data exports</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/shard-timestamp" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sharded timestamps</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/automate-database-create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Automating database creation</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/solutions/index-map-field" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reduce index costs with map fields</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Usage, limits, and pricing</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/quotas" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage and limits</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/monitor-usage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/pricing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Cloud Firestore billing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/billing-example" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Example Cloud Firestore costs</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/storage-size" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand storage size calculations</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/best-practices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Best practices for Cloud Firestore</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Cloud Firestore integrations</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/use-rest-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Cloud Firestore REST API</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/firestore-for-rtdb" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/library-integrations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Third-party library integrations</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/swift/firebasefirestore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS — Swift</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/ios/firebasefirestore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS — Objective-C</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/js/firebase.firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/functions/providers_firestore_" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.dev/nodejs/firestore/latest/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Node.js</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.github.io/google-cloud-java/google-cloud-clients/apidocs/index.html?com/google/cloud/firestore/package-summary.html" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Java</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.github.io/google-cloud-python/latest/firestore/client.html" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Python</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://godoc.org/cloud.google.com/go/firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Go</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Firestore/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C#</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.github.io/google-cloud-php/#/docs/cloud-firestore/latest/firestore/readme" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>PHP</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201001055333/https://googleapis.github.io/google-cloud-ruby/docs/google-cloud-firestore/latest/Google/Firestore/V1beta1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Ruby</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/reference/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/reference/rpc" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>RPC</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Samples</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/client/samples-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/client/samples-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/firestore/client/samples-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Storage</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/ios/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/android/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/web/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/admin/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/cpp/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/unity/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Security &amp; Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Security</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/security/core-syntax" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/monitor-storage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor activity</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/storage/gcp-integration" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Integrate with Google Cloud</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Hosting</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>What can you do with Firebase Hosting?</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/quickstart" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/deploying" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test locally then deploy</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/multisites" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Share project resources across multiple sites</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/custom-domain" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect a custom domain</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/full-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure hosting behavior</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/i18n-rewrites" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure i18n rewrites</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/reserved-urls" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add SDKs using reserved URLs</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Serve dynamic content and host microservices</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/serverless-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Functions for Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/cloud-run" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Run</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/manage-cache" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage cache behavior</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/manage-releases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage releases</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/web-request-logs-and-metrics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor web request data with Cloud Logging</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/usage-quotas-pricing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage, quotas, and pricing</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/hosting/api-deploy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy using the REST API</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Cloud Functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>What can I do with Cloud Functions?</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/beta-v1-diff" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade to v1.0+ from beta</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Call functions directly</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/callable" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Call functions from your app</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/http-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Call functions via HTTP requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/schedule-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run functions on a schedule</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Trigger background functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/firestore-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Firestore triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/database-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Realtime Database triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/rc-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/auth-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authentication triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/analytics-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analytics triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/crashlytics-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Crashlytics triggers</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/gcp-storage-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Storage triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/pubsub-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Pub/Sub triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/test-lab-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Lab triggers</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Write functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/manage-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage deployment and runtime options</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/typescript" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write functions in TypeScript</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/terminate-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sync, async, and promises</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/retries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retry asynchronous functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/config-env" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Environment configuration</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/organize-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Organize functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/handle-dependencies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handling dependencies</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/networking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Optimizing networking</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/tips" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Tips &amp; tricks</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Test functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/local-emulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run functions locally</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/unit-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unit testing functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/local-shell" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test functions interactively</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Monitor functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/writing-and-viewing-logs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write and view logs</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/reporting-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Report errors</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/monitored-metrics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View monitored metrics</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>API Reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Firebase SDK for Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/functions/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/callable-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Protocol specification for https.onCall</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video Series: learn Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/functions-and-firebase" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions and Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions locations</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/functions/quotas" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Quotas and limits</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Machine Learning</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Vision</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Recognize text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Label images</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Recognize landmarks</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>AutoML Vision Edge</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/automl-image-labeling" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/train-image-labeler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Train image labeling models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Label images with your models</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/migrate-automl-datasets" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate datasets</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Custom Models</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use a custom model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/manage-hosted-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy &amp; manage custom models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Migrate from the legacy API</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/migrate-from-legacy-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/migrate-from-legacy-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Advanced Topics</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>A/B test two versions of a model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Prepare for Production</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Protect your Cloud credentials</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/ios/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml/android/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Legacy Documentation</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>ML Kit for Firebase</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Vision</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Recognize text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Detect faces</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/face-detection-concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Scan barcodes</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Label images</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Detect and track objects</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/object-detection" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/detect-objects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/detect-objects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Recognize landmarks</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>AutoML Vision Edge</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/automl-image-labeling" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/train-image-labeler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Train image labeling models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Label images with your models</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/migrate-automl-datasets" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate datasets</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Natural Language</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Identify the language of text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Translate text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/translation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/translate-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/translate-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/translation-terms" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage guidelines</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Generate smart replies</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Custom Models</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use a custom model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/manage-hosted-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage hosted custom models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use a custom TensorFlow Lite build</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/use-custom-tflite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/use-custom-tflite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Advanced Topics</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>A/B test two versions of a model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Prepare for Production</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Reduce app package size</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/reduce-app-size" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Protect your Cloud credentials</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/ios/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ml-kit/android/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Understand Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/rules-language" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Security Rules language</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/rules-behavior" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>How Security Rules work</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/rules-and-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Security Rules and Firebase Authentication</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Write Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/basics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Basic Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/insecure-rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Avoid insecure rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/data-validation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data validation</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Test Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/emulator-setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up the emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/unit-tests" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build unit tests</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/emulator-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Generate test reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/simulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Quickly validate Security Rules</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/rules/manage-deploy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage and deploy Security Rules</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Quality</span></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Crashlytics</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/start-using-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Start using Google Analytics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/test-implementation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/customize-crash-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get deobfuscated crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/ndk-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Android NDK crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/velocity-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize velocity alerts</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/extend-with-cloud-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>From Fabric to Firebase</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/migration-post-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Steps after migrating your app</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/upgrade-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade to the Firebase Crashlytics SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/switch-to-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Switch from Answers to Analytics</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Deprecated Fabric SDK guides</span></div></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/customize-crash-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/force-a-crash" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your implementation</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get deobfuscated crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201001055333/https://firebase.google.com/docs/crashlytics/ndk-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Android NDK crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Performance Monitoring</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Get started</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/get-started-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/get-started-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/get-started-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Learn about automatically collected data</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/app-start-foreground-background-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>App start, foreground, background (iOS &amp; Android)</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/screen-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Screen rendering (iOS &amp; Android)</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/page-load-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Page loading (web)</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>HTTP/S network requests</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Customize data collection and aggregation</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/custom-code-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific code</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/custom-network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific network requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/custom-url-patterns" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create custom URL patterns</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/disable-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Disable Performance Monitoring</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Track, view, and filter data</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview of the console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/attributes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Filter data using attributes</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/issue-management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View performance issues</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/perf-mon/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Test Lab</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/ios/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/ios/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/game-loop" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/ios/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/ios/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/continuous" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with CI systems</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/android-studio" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with Android Studio</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/instrumentation-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run an instrumentation test</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/robo-ux-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Robo test</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/game-loop" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/test-screenshots" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Take screenshots in a test</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/android/avds" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with virtual devices</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>REST API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/reference/testing/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Testing (submit test &amp; monitor)</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/test-lab/reference/toolresults/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>ToolResults (retrieve results)</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>App Distribution</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/manage-testers" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage testers</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Set up for testers</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/ios/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/android/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Distribute iOS apps</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/ios/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/ios/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/set-up-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up in-app alerts</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Distribute Android apps</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/android/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/android/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/android/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-distribution/android/distribute-gradle" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Gradle</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Grow</span></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Predictions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/predefined-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Churn and spend predictions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export prediction data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Use case examples</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/use-cases/prevent-churn" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Prevent churn</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Legacy Predictions (deprecated)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Use Cases</span></div></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/use-cases/prevent-churn" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Prevent Churn</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1/explore-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Explore Prediction Results</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export Prediction Data to BigQuery</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1/predefined-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Churn and Spend Predictions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/predictions/v1/risk-profiles" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Risk Tolerance and Model Performance</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>A/B Testing</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ab-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ab-testing/abtest-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Remote Config Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ab-testing/abtest-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Messaging Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ab-testing/abtest-inappmessaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create In-App Messaging Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ab-testing/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video Series: Learn A/B Testing</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Cloud Messaging</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/fcm-architecture" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>FCM Architectural Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/concept-options" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>About FCM messages</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up an iOS client</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/certs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring APNs with FCM</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/send-image" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send an image in the notification payload</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/ios/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up an Android client</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/send-image" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send an image in the notification payload</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/android/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a C++ client</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/cpp/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a Unity client</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/unity/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Web (JavaScript)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a JavaScript client</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/js/case-studies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Case studies</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Server environments</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/server" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Your server environment and FCM</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/migrate-v1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate to the HTTP v1 API</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/auth-server" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authorize send requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/send-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build send requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/receive-upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/manage-topics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage topics from the server</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/cloud-messaging/understand-delivery" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understanding message delivery</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>In-App Messaging</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging/explore-use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Explore use cases</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging/compose-campaign" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Compose a campaign</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging/modify-message-behavior" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Modify message behavior</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/in-app-messaging/customize-messages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize messages</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Remote Config</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>What can I do with Remote Config?</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config use cases</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Key concepts and strategies</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/parameters" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Parameters and conditions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/templates" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Templates and versioning</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/loading" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Config loading strategies</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/propagate-updates-realtime" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Propagate updates in real time</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/config-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config and Analytics</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-config-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on iOS</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-config-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Web (JavaScript)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-config-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on Web</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-config-cpp" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Remote Config with C++</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/use-config-unity" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Remote Config with Unity</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/automate-rc" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Modify Remote Config programmatically</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/remote-config/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST API reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/remote-config/condition-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Conditional expression reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/android/com/google/firebase/remoteconfig/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/swift/firebaseremoteconfig/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS Swift SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/ios/firebasecore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS Obj-C SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/unity/namespace/firebase/remote-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/reference/cpp/namespace/firebase/remote-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++ reference</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use Cases</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Convert Web Users To App Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/use-cases/user-to-user" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Invite Users to Your App</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/use-cases/rewarded-referral" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reward User Referrals</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/operating-system-integrations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating System Integrations</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Create Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/create-links" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/ios/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/android/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/cpp/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/unity/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/create-manually" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manual URL Construction</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Receive Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/ios/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/android/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/cpp/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/unity/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/custom-domains" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Domain</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View Analytics Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/debug" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debug Dynamic Links</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/link-previews" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Previews &amp; Social Metadata</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Google AdMob</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/ios/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started for iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/android/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started for Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/analytics-and-firebase" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Analytics and Firebase with AdMob apps</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Use AdMob in a game</span></div></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/cpp/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/cpp/cocos2d-x" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cocos2d-x</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/admob/cpp/rewarded-video" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Rewarded video</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-external"><a href="//web.archive.org/web/20201001055333/https://developers.google.com/admob/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Google Ads</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/ads" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>App Indexing</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/ios/app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/ios/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Your Implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/ios/measure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enhance Search Performance</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/public-content" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Refine Public Content Indexing</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/log-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log User Actions</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Your Implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/measure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enhance Search Performance</span></a></li><li class="devsite-nav-item"><a href="/web/20201001055333/https://firebase.google.com/docs/app-indexing/android/migrate" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate to the Latest API</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-toc> <devsite-toc class="devsite-nav"></devsite-toc> <devsite-content> <article class="devsite-article"> <article class="devsite-article-inner"><style> /* Styles inlined from /styles/docs.css */ .center { text-align: center } /* Used in AdMob code examples */ .oldcode { opacity: .40; /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); /* IE <= 7 */ filter:alpha(opacity=40); } .newcode { font-weight: bold; } /* Device Screenshots */ .deviceshot { max-width: 700px; max-height: 400px; } /* Start Changelog styles */ .badge { position: relative; top: -3px; border-radius: 16px; display: inline-block; width: 90px; height: 32px; line-height: 32px; margin-right: 10px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; } /* Colours for each type of changelog entry. */ /* TODO: Change the colours to match the site colour scheme */ .badge-changed { background-color: #F4B400; color: #fff; } .badge-fixed { background-color: #4285F4; color: #fff; } .badge-important { background-color: #DB4437; color: #fff; } .badge-feature { background-color: #0F9D58; color: #fff; } .badge-deprecated { background-color: #DB4437; color: #fff; } .badge-issue { background-color: #DB4437; color: #fff; } .changelog > ul { padding-left: 0; } .changelog > ul > li { list-style-type: none; margin-bottom: 22px; } .firebase-support-release-page .changelog > ul { list-style-type: none; padding-left: 110px; } .release-changed::before, .release-feature::before, .release-fixed::before, .release-issue::before, .release-deprecated::before, .release-removed::before, .release-unchanged::before, .release-rules::before, .release-android::before, .release-android-bom::before, .release-ios::before, .release-admin::before, .release-cpp::before, .release-unity::before, .release-functions::before, .release-javascript::before { display: block; float: left; color: white; width: 100px; height: 32px; margin-left: -110px; margin-right: 10px; margin-top: -5px; padding-top: 4px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; border-radius: 16px; } .release-changed::before { content: "changed"; background-color: #F4B400; } .release-feature::before { content: "feature"; background-color: #0F9D58; } .release-fixed::before { content: "fixed"; background-color: #4285F4; } .release-issue::before { content: "issue"; background-color: #DB4437; } .release-deprecated::before { content: "deprecated"; background-color: #E65100; } .release-removed::before { content: "removed"; background-color: #546E7A; } .release-unchanged::before { content: "no change"; background-color: #CCCCCC; } .release-android::before { content: "android"; background-color: #A4C639; } .release-android-bom::before { content: "android bom"; background-color: #A4C639; } .release-ios::before { text-transform: none; content: "iOS"; background-color: #007aff; } .release-admin::before { content: "admin"; background-color: #039BE5; } .release-cpp::before { content: "c++"; background-color: #FF8A65; } .release-unity::before { content: "unity"; background-color: #00cccc; } .release-functions::before { content: "functions"; background-color: #2C384A; } .release-javascript::before { content: "javascript"; background-color: #7e57c2; } .release-rules::before { content: "rules"; background-color: #1B3A57; } /* End Changelog styles */ /* Docs Overview page styles */ .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 64px; width: 64px; margin: 10px 16px 0 -16px; } .firebase-docs-overview .devsite-landing-row h2 { margin: 80px 0 -40px; } .devsite-landing-row-3-up .docs-landing-row-item { width: calc((100% - 80px)/2); display: inline-block; } .docs-landing-icon { font-size: 48px; height: 48px; margin: 11px; width: 48px; } .firebase-reference-list { display: -ms-flex; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; list-style: none; margin: 0 0 40px; padding: 0; } .firebase-reference-list-item { -ms-flex: 0 0 50%; flex: 0 0 50%; margin: 40px 0 0; padding: 0; } .firebase-reference-list-item > a { -ms-flex-align: center; align-items: center; display: -ms-flex; display: flex; } .firebase-reference-list-item > a:not(:hover) h3 { color: #424242; } .firebase-reference-list-item > a:not(:hover) li, .firebase-reference-list-item > a:not(:hover) p { color: #757575; } .firebase-reference-list-item .docs-landing-icon { -ms-flex-align: center; align-items: center; background-color: #f5f5f5; border-radius: 50%; -ms-flex: 0 0 88px; flex: 0 0 88px; height: 88px; -ms-justify-content: center; justify-content: center; margin: 0 16px 0 0; padding: 20px; } .firebase-reference-list-item h3 { -ms-flex: 0 0 auto; flex: 0 0 auto; font-size: 18px; line-height: 28px; margin: 0; } .firebase-reference-list-item ul { list-style: none; padding: 0; } .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 88px; width: auto; } .firebase-reference-list-item.docs-android .docs-landing-icon { color: #00bfa5; } .firebase-reference-list-item.docs-cpp .docs-landing-icon { color: #fd8c09; } .firebase-reference-list-item.docs-ios .docs-landing-icon { color: #16aaca; } .firebase-reference-list-item.docs-unity .docs-landing-icon { color: #000000; } .firebase-reference-list-item.docs-web .docs-landing-icon { color: #c52062; } .firebase-reference-list-item.docs-http .docs-landing-icon { color: #3F51B5; } @media (max-width: 1000px) { .firebase-reference-list { -ms-flex-direction: column; flex-direction: column; } } /* end Docs Overview page styles */ /* Full-page platform selector for Crashlytics docs */ /* Note: h3 in selector content must include hide-from-toc */ .full-page-selector, .full-page-selector-content { border: none; font-size: inherit; } .full-page-selector > .kd-buttonbar { margin: 32px 0px; } .full-page-selector > section { display: none; } .full-page-selector-content > .selected { padding: 0; font-size: inherit; } .full-page-selector-content > .kd-buttonbar { display: none; } .select-page { display: none; } .select-page + .ds-selector-tabs, .after-selection ~ .ds-selector-tabs { border: none; font-size: inherit; } .select-page + .ds-selector-tabs > .kd-buttonbar { margin: 32px 0px; } .select-page + .ds-selector-tabs > section { display: none; } .after-selection ~ .ds-selector-tabs > .selected { padding: 0; font-size: inherit; } .after-selection ~ .ds-selector-tabs > section p { line-height: 24px; } .after-selection ~ .ds-selector-tabs > .kd-buttonbar { display: none; } /* End full-page platform selector */ /* Custom beta and alpha indicators (v1 format, followed by v2 format) */ .devsite-nav-alpha .devsite-nav-icon::before, .devsite-nav-icon[data-icon="alpha"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTMuMjA2IDE1YTU0LjIxNCA1NC4yMTQgMCAwIDEtLjkyLTIuNTc4bC0uMTQtLjQxNGE4MS43NiA4MS43NiAwIDAgMC0uMTM2LS40MDJDMTAuODUgMTMuNjcyIDkuNTYyIDE0LjUgNy41IDE0LjUgNC44MSAxNC41IDMgMTIuNjE2IDMgOXMxLjgxLTUuNSA0LjUtNS41YzIuMDYyIDAgMy4zNS44MjggNC41MSAyLjg5NGwuMTM3LS40MDIuMTM5LS40MTRjLjM4LTEuMTI3LjY1My0xLjkwMi45Mi0yLjU3OGgyLjE2NmMtLjM2NC44My0uNjcyIDEuNjgtMS4xOSAzLjIxN2wtLjE0LjQxM0E1Ny45OSA1Ny45OSAwIDAgMSAxMy4xOTQgOWMuMjc1LjcxLjU1NCAxLjQ5OC44NDggMi4zN2wuMTQuNDEzYy41MTggMS41MzguODI2IDIuMzg3IDEuMTkgMy4yMTdoLTIuMTY2ek03LjUgNS41QzUuOTMyIDUuNSA1IDYuNDcgNSA5YzAgMi41My45MzIgMy41IDIuNSAzLjUgMS40OTcgMCAyLjQ0NC0uOTE3IDMuNTM1LTMuNUM5Ljk0NCA2LjQxNyA4Ljk5NyA1LjUgNy41IDUuNXoiIGZpbGw9InJnYmEoMCwwLDAsLjM4KSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+'); } .devsite-nav-beta .devsite-nav-icon::before, .devsite-nav-icon[data-icon="beta"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIuMjM2IDcuNjgzQTQgNCAwIDAgMSAxMCAxNUg3djJINVY0YTIgMiAwIDAgMSAyLTJoMi41YTMuNSAzLjUgMCAwIDEgMi43MzYgNS42ODN6TTcgMTNoM2EyIDIgMCAxIDAgMC00SDd2NHptMC02aDIuNWExLjUgMS41IDAgMCAwIDAtM0g3djN6IiBmaWxsPSJyZ2JhKDAsMCwwLC4zOCkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); } .firebase-platform-label { font: 500 12px/24px Roboto,sans-serif; } /* Full-page platform selector dropdown */ /* Note: use menu variables in _elements.html file */ .full-page-selector-dropdown { border: none; position: relative; float: left; display: inline-block; } .full-page-selector-dropdown > .ds-selector-tabs { display: none; position: absolute; min-width: 160px; z-index: 1; } .full-page-selector-dropdown:hover .ds-selector-tabs { display: block; margin: 0; } .full-page-selector-dropdown:hover .kd-tabbutton { display: block; border: none; height: inherit; text-align: left; } .full-page-selector-dropdown:hover .kd-buttonbar { border: none; height: inherit; } .full-page-selector-dropdown h3:hover { color: white; background-color: #039be5; } .full-page-selector-dropdown:hover .devsite-overflow-menu-button { display: none; } </style> <div class="devsite-banner devsite-banner-announcement"> <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <style> .devsite-banner-announcement:not(.devsite-banner-tenant) { background: #202124; color: white; font-weight: 500; } .devsite-banner-announcement a { color: white; font-weight: 700; } .devsite-banner-announcement a:link, .devsite-banner-announcement a:visited { background: 0; } .devsite-banner-announcement a:hover, .devsite-banner-announcement a:focus { text-decoration: none; } .devsite-banner-announcement .devsite-banner-message-text { margin: 0 auto; } </style> Google is committed to advancing racial equity for Black communities. <a href="https://web.archive.org/web/20201001055333/https://google.com/racialequity" class="gc-analytics-event" data-category="Announcement" data-label="Racial Equity">See how.</a> </div> </div> </div> <div class="devsite-article-meta"> <ul class="devsite-breadcrumb-list" role="navigation" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="/web/20201001055333/https://firebase.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1"> Firebase </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="/web/20201001055333/https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2"> Docs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="/web/20201001055333/https://firebase.google.com/docs/guides" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3"> Guides </a> </li> </ul> <devsite-page-rating position="header" selected-rating="0" hover-rating-star="0"> </devsite-page-rating> </div> <devsite-feedback position="header" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20200924-r01-rc00.429872899142986475" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/"> <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title">Create Dynamic Links with C++</h1> <devsite-toc class="devsite-nav" devsite-toc-embedded> </devsite-toc> <div class="devsite-article-body clearfix "> <p>You can create short or long Dynamic Links with the Firebase Dynamic Links API. The API takes several optional parameter structures to build links. Short links can also be created from a previously generated long link. Firebase Dynamic Links generates a URL like the following:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">https://example.page.link/WXYZ </code></pre> <p>The C++ SDK works for both Android and iOS, with some additional setup required for each platform.</p> <h2 id="before_you_begin" data-text="Before you begin" tabindex="0">Before you begin</h2> <p>Before you can use <a href="/web/20201001055333/https://firebase.google.com/docs/reference/unity/namespace/firebase/dynamic-links">Firebase Dynamic Links</a>, you need to:</p> <ul> <li><p>Register your C++ project and configure it to use Firebase.</p> <p>If your C++ project already uses Firebase, then it&#39;s already registered and configured for Firebase.</p></li> <li><p>In your project-level <code translate="no" dir="ltr">build.gradle</code> file, make sure to include Google&#39;s Maven repository in both your <code translate="no" dir="ltr">buildscript</code> and <code translate="no" dir="ltr">allprojects</code> sections.</p></li> <li><p>Add the <a href="/web/20201001055333/https://firebase.google.com/download/cpp">Firebase C++ SDK</a> to your C++ project.</p></li> </ul> <aside class="objective"><strong>Find detailed instructions for these initial setup tasks in <a href="/web/20201001055333/https://firebase.google.com/docs/cpp/setup#note-select-platform">Add Firebase to your C++ project</a>.</strong> </aside> <p>Note that adding Firebase to your C++ project involves tasks both in the <a href="//web.archive.org/web/20201001055333/https://console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick">Firebase console</a> and in your open C++ project (for example, you download Firebase config files from the console, then move them into your C++ project).</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="android" data-text="Android" tabindex="0">Android</h3><ol> <li>In the Firebase console, open the <strong>Dynamic Links</strong> section.</li> <li><p>If you have not already accepted the terms of service and set a URI prefix for your Dynamic Links, do so when prompted.</p> <p>If you already have a Dynamic Links URI prefix, take note of it. You need to provide a Dynamic Links URI prefix when you programmatically create Dynamic Links.</p> <p><img src="/web/20201001055333im_/https://firebase.google.com/docs/dynamic-links/images/dynamic-links-domain.png"></p></li> <li><strong>Recommended</strong>: Specify the URL patterns allowed in your deep links and fallback links. By doing so, you prevent unauthorized parties from creating Dynamic Links that redirect from your domain to sites you don&#39;t control. See <a href="https://web.archive.org/web/20201001055333/https://support.google.com/firebase/answer/9021429">Whitelist URL patterns</a>.</li> </ol></section> <section><h3 id="ios" data-text="iOS" tabindex="0">iOS</h3><ol> <li>In the Firebase console, open the <strong>Dynamic Links</strong> section.</li> <li><p>If you have not already accepted the terms of service and set a URI prefix for your Dynamic Links, do so when prompted.</p> <p>If you already have a Dynamic Links URI prefix, take note of it. You need to provide a Dynamic Links domain when you programmatically create Dynamic Links.</p> <p><img src="/web/20201001055333im_/https://firebase.google.com/docs/dynamic-links/images/dynamic-links-domain.png"></p></li> <li>The Firebase Dynamic Links C++ client library uses custom URL schemes on iOS to process links. You must add custom URL schemes to your app to support receiving Dynamic Links: <ol> <li>To open your project configuration, double-click the project name in the left tree view. Select your app from the <strong>TARGETS</strong> section, then select the <strong>Info</strong> tab, and expand the <strong>URL Types</strong> section.</li> <li>Click the <strong>+</strong> button, and add a URL scheme for your reversed client ID. To find this value, open the <code translate="no" dir="ltr"><code translate="no" dir="ltr"><nobr>GoogleService-Info.plist</nobr></code></code> configuration file, and look for the <code translate="no" dir="ltr">REVERSED_CLIENT_ID</code> key. Copy the value of that key, and paste it into the <strong>URL Schemes</strong> box on the configuration page. Leave the other fields blank.</li> <li>Click the <strong>+</strong> button, and add a second URL scheme. This one is the same as your app&#39;s bundle ID. For example, if your bundle ID is <code translate="no" dir="ltr">com.example.ios</code>, type that value into the <strong>URL Schemes</strong> box. You can find your app&#39;s bundle ID in the <strong>General</strong> tab of the project configuration (<strong>Identity &gt; Bundle Identifier</strong>).</li> </ol></li> </ol></section> </div> <h2 id="use-the-firebase-console" data-text=" Use the Firebase console " tabindex="0"> Use the Firebase console </h2> <p>If you want to generate a single Dynamic Link, either for testing purposes, or for your marketing team to easily create a link that can be used in something like a social media post, the simplest way would be to visit the <a href="https://web.archive.org/web/20201001055333/https://console.firebase.google.com/project/_/durablelinks/links/">Firebase console</a> and create one manually following the step-by-step form.</p> <h3 id="custom_domains" data-text="Custom domains" tabindex="0">Custom domains</h3> <p>You can have greater control over your Dynamic Link&#39;s branding by using your own domain instead of a <code translate="no" dir="ltr">goo.gl</code> or <code translate="no" dir="ltr">page.link</code> subdomain. Follow <a href="/web/20201001055333/https://firebase.google.com/docs/dynamic-links/custom-domains">these instructions</a> to set up a custom domain for your project.</p> <aside class="note">If you are building your project for iOS, you must edit the `Info.plist` file per the [iOS only instructions](https://firebase.google.com/docs/dynamic-links/custom-domains#set_up_a_custom_domain_in_the).</aside> <h2 id="using_the_api" data-text="Using the Firebase Dynamic Links API" tabindex="0">Using the Firebase Dynamic Links API</h2> <h3 id="create_and_initialize_app" data-text="Create and initialize App" tabindex="0">Create and initialize App</h3> <p>Before you can create Dynamic Links, you&#39;ll need to create and initialize a <a href="/web/20201001055333/https://firebase.google.com/docs/reference/cpp/class/firebase/app"><code translate="no" dir="ltr">firebase::App</code></a> object.</p> <aside class="note">You only need to initialize firebase::App once, no matter how many Firebase C++ features you use.</aside> <p>Include the header file for <code translate="no" dir="ltr">firebase::App</code>:</p> <pre class="prettyprint" translate="no" dir="ltr">#include "firebase/app.h"</pre> <p>The next part varies depending on your platform:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="android_1" data-text="Android" tabindex="0">Android</h3><p> Create the <code translate="no" dir="ltr">firebase::App</code>, passing the JNI environment and a <code translate="no" dir="ltr">jobject</code> reference to the Java Activity as arguments:</p> <pre class="prettyprint" translate="no" dir="ltr">app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);</pre></section> <section><h3 id="ios_1" data-text="iOS" tabindex="0">iOS</h3><p> Create the <code translate="no" dir="ltr">firebase::App</code>:</p> <pre class="prettyprint" translate="no" dir="ltr">app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));</pre></section> </div> <h3 id="initialize_library" data-text="Initialize Dynamic Links library" tabindex="0">Initialize Dynamic Links library</h3> <p>Before creating a Dynamic Link, you must first <a href="/web/20201001055333/https://firebase.google.com/docs/reference/cpp/namespace/firebase/dynamic-links#initialize">initialize</a> the Dynamic Links library: <pre class="prettyprint" translate="no" dir="ltr">::firebase::dynamic_links::Initialize(app, null);</pre></p> <h3 id="creating_a_long_from_parameters" data-text="Creating a long Dynamic Link from parameters" tabindex="0">Creating a long Dynamic Link from parameters</h3> <p>To create a Dynamic Link, create a DynamicLinkComponents object, setting any of the optional members for additional configuration, and passing it to <code translate="no" dir="ltr">dynamic_links::GetShortLink</code> or <code translate="no" dir="ltr">dynamic_links::GetLongLink</code>.</p> <p>The following minimal example creates a long Dynamic Link to https://www.example.com/ that opens with your Android app com.example.android.package_name and iOS app com.example.ios:</p> <pre class="prettyprint" translate="no" dir="ltr"> firebase::dynamic_links::IOSParameters ios_parameters(&quot;com.example.ios&quot;); firebase::dynamic_links::AndroidParameters android_parameters( &quot;com.example.android.package_name&quot;); firebase::dynamic_links::DynamicLinkComponents components( &quot;https://www.example.com/&quot;, &quot;example.page.link&quot;); components.android_parameters = &amp;android_parameters; components.ios_parameters = &amp;ios_parameters; firebase::dynamic_links::GeneratedDynamicLink long_link = firebase::dynamic_links::GetLongLink(components); </pre> <aside class="note"><strong>Note:</strong><span> Long Links append all of the configuration settings as query arguments to the link and therefore do not require any network calls.</span></aside> <h3 id="creating_a_short" data-text="Creating a short Dynamic Link" tabindex="0">Creating a short Dynamic Link</h3> <p>To create a short Dynamic Link, pass a previously generated long link to <code translate="no" dir="ltr">GetShortLink</code> or build <code translate="no" dir="ltr">DynamicLinkComponents</code> the same way as above.</p> <p><code translate="no" dir="ltr">GetShortLink</code> optionally takes an extra <code translate="no" dir="ltr">DynamicLinkOptions</code> config parameter with <code translate="no" dir="ltr">PathLength</code>; this allows you to control how the link should be generated. Generating a short link requires a network request to the Firebase backend, so <code translate="no" dir="ltr">GetShortLink</code> is asynchronous, returning a <code translate="no" dir="ltr">Future&lt;GeneratedLink&gt;</code>.</p> <p>For example:</p> <pre class="prettyprint" translate="no" dir="ltr"> firebase::dynamic_links::DynamicLinkOptions short_link_options; short_link_options.path_length = firebase::dynamic_links::kPathLengthShort; firebase::Future&lt;firebase::dynamic_links::GeneratedDynamicLink&gt; result = firebase::dynamic_links::GetShortLink(components, short_link_options); </pre> <p>If your program has an update loop that runs regularly (say at 30 or 60 times per second), you can check the results once per update:</p> <pre class="prettyprint" translate="no" dir="ltr"> if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) { firebase::dynamic_links::GeneratedDynamicLink link = *result.result(); printf(&quot;Create short link succeeded: %s\n&quot;, link.url.c_str()); } else { printf(&quot;Created short link failed with error &#39;%s&#39;\n&quot;, result.error_message()); } } </pre> </div> <devsite-page-rating position="footer" selected-rating="0" hover-rating-star="0"> </devsite-page-rating> <devsite-feedback position="footer" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20200924-r01-rc00.429872899142986475" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/"> <button> Send feedback </button> </devsite-feedback> </article> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://web.archive.org/web/20201001055333/https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://web.archive.org/web/20201001055333/https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://web.archive.org/web/20201001055333/https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2020-09-30 UTC.</p> </devsite-content-footer> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Learn</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/guides/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/reference/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/samples/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Samples </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/docs/libraries/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Libraries </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://github.com/firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> GitHub </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://firebase.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/summit/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Firebase Summit </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://www.facebook.com/Firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Facebook </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://twitter.com/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://www.youtube.com/user/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/support/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Contact support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://stackoverflow.com/questions/tagged/firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://firebase.community/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Slack community </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20201001055333/https://groups.google.com/forum/#!forum/firebase-talk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Google group </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/support/releases" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Release notes </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20201001055333/https://firebase.google.com/support/faq/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> FAQs </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://web.archive.org/web/20201001055333/https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <img class="devsite-footer-sites-logo" src="https://web.archive.org/web/20201001055333im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/lockup-developers.svg" loading="lazy" alt="Google Developers"> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20201001055333/https://developer.android.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link"> Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20201001055333/https://developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link"> Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20201001055333/https://firebase.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link"> Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20201001055333/https://cloud.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link"> Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20201001055333/https://developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link"> All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/web/20201001055333/https://firebase.google.com/terms/" data-category="Site-Wide Custom Events" data-label="Footer Terms link"> Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//web.archive.org/web/20201001055333/https://policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link"> Privacy </a> </li> </ul> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </devsite-language-selector> </nav> </div> </devsite-footer-utility> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" gtm>{"parameters": {"freeTrialEligibleUser": "False", "internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Firebase", "scriptsafe": null, "signedIn": "False", "tenant": "firebase"}, "tags": ["GTM-N84485"]}</script> </devsite-analytics> <firebase-gtm></firebase-gtm> <script> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://web.archive.org/web/20201001055333/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/js/app_loader.js', '[4,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20201001055333/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159","https://web.archive.org/web/20201001055333/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase","https://web.archive.org/web/20201001055333/https://firebase-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/firebase/manifest.json","/_static/images/video-placeholder.svg","https://web.archive.org/web/20201001055333/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/favicon.png","https://web.archive.org/web/20201001055333/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/lockup.png","https://web.archive.org/web/20201001055333/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"],1]') </script> </body> </html><!-- FILE ARCHIVED ON 05:53:33 Oct 01, 2020 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 19:01:10 Dec 12, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.609 exclusion.robots: 0.029 exclusion.robots.policy: 0.017 esindex: 0.011 cdx.remote: 48.295 LoadShardBlock: 245.223 (3) PetaboxLoader3.datanode: 110.897 (4) PetaboxLoader3.resolve: 169.147 (2) load_resource: 118.096 -->

Pages: 1 2 3 4 5 6 7 8 9 10