[{"data":1,"prerenderedAt":14},["ShallowReactive",2],{"highlighted-code:android":3},{"installation:1":4,"quickstart:1":5,"quickstart:2":6,"identify:1":7,"screens:1":8,"screens:3":9,"sessions:3":10,"crashes:2":11,"crashes:3":12,"privacy:1":13},"\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">dependencies\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">    implementation\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"io.ravenkeep:ravenkeep-android:0.1.0\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">    \u002F\u002F Only for the Compose helper, TrackScreen\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">    implementation\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"io.ravenkeep:ravenkeep-android-compose:0.1.0\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> android.app.Application\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> io.ravenkeep.android.Ravenkeep\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> io.ravenkeep.android.RavenkeepOptions\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">class\u003C\u002Fspan>\u003Cspan style=\"color:#F7C569\"> ShopApplication\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> : \u003C\u002Fspan>\u003Cspan style=\"color:#F7C569\">Application\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">    override\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> fun\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> onCreate\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">        super\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">onCreate\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">        \u002F\u002F The publishable key is safe in an app: it only works from the apps listed in the project.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">        Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">this\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">RavenkeepOptions\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(publishableKey \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> \"rk_pub_lumen_xxxxxxxxxxxx\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">this\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">new\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> RavenkeepOptions\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"rk_pub_lumen_xxxxxxxxxxxx\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">));\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F After sign-in, and on every launch of a signed-in app: the hash stays in memory only.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">identify\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    userId \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> me.id,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    userHash \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> me.ravenkeepUserHash, \u003C\u002Fspan>\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F from your backend\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    email \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> me.email,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    account \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> RavenkeepAccount\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(me.teamId, me.teamName),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">) { result \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">->\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    result.error?.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">let\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { Log.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">w\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"Shop\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"Ravenkeep identify: \u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">${\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">it.code\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F On sign-out\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">reset\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F io.ravenkeep:ravenkeep-android-compose, in each destination of your navigation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">composable\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"cart\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">    TrackScreen\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"Cart\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">    CartScreen\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F Or anywhere, with the core library alone\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">screen\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"Lesson\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">mapOf\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"lessonId\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> to lesson.id))\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F With the publishable key, only the project's public event names\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">track\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"order.placed\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">mapOf\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"items\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> to \u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">3\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"plan\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> to \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"pro\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F Every few seconds while your player plays unmuted\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">if\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> (player.isPlaying \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">&#x26;&#x26;\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> player.volume \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">>\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> 0f\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">reportInteraction\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>-keepattributes SourceFile,LineNumberTable\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">try\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    sync.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">run\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">} \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">catch\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> (error: \u003C\u002Fspan>\u003Cspan style=\"color:#F7C569\">IOException\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">    Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">captureException\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(error, \u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">mapOf\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"job\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> to \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"sync\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">this\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">RavenkeepOptions\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(publishableKey \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> \"rk_pub_lumen_xxxxxxxxxxxx\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, startOptedOut \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> true\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F When the person consents, and if they withdraw\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">optIn\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">Ravenkeep.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">optOut\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1793518581327]