Product Insights https://www.flurry.com/ en How to Leverage Flurry Crash Analytics & Reporting to Improve Mobile App User Experience https://www.flurry.com/blog/improve-app-ux-crash-analytics-reporting/ <span class="field field--name-title field--type-string field--label-hidden">How to Leverage Flurry Crash Analytics & Reporting to Improve Mobile App User Experience</span> <div class="field field--name-field-blog-author-and-role field--type-string-long field--label-hidden field__item">By Bisera Ferrero, Director of Flurry Engineering</div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="https://www.flurry.com/user/32/" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">LisaMoshfegh</span></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 12/16/2020 - 08:05</span> <div class="field field--name-field-blog-post-date field--type-datetime field--label-hidden field__item"><time datetime="2020-12-16T12:00:00Z" class="datetime">2020-12-16</time></div> <div class="field field--name-field-blog-tags field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="https://www.flurry.com/taxonomy/term/3/" hreflang="en">Product News</a></div> <div class="field__item"><a href="https://www.flurry.com/taxonomy/term/299/" hreflang="en">Product Insights</a></div> </div> </div> <span class="a2a_kit a2a_kit_size_32 addtoany_list" data-a2a-url="https://www.flurry.com/blog/improve-app-ux-crash-analytics-reporting/" data-a2a-title="How to Leverage Flurry Crash Analytics & Reporting to Improve Mobile App User Experience"><a class="a2a_button_linkedin"></a><a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_google_plus"></a><a class="a2a_dd addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.flurry.com%2Fblog%2Fimprove-app-ux-crash-analytics-reporting%2F&title=How%20to%20Leverage%20Flurry%20Crash%20Analytics%20%26%20Reporting%20to%20Improve%20Mobile%20App%20User%20Experience"></a></span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><span><span><span><span><span><span>App developers must find new opportunities to delight app users while also increasing an app’s profitability. And on top of creating an engaging user experience, driving user acquisition, or finding new ways to monetize, the ability to quickly resolve crash incidents is essential for sustaining a positive user experience.</span></span></span></span></span></span><span><span><span><span><span><span> </span></span></span></span></span></span></p> <p><a href="https://www.flurry.com/crash/"><span><span><span><span><span><span><span><span>Flurry Crash Analytics</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> simplifies identifying and responding to crashes, errors, and exceptions in a mobile app. It does so by giving you, the app developer, the tools to completely reconstruct the crash (bug) in order to isolate its cause. Although <span><span>the basic setup</span></span> to get the crash information is easy, the <span><span>enhanced setup requires</span></span> a bit of additional planning, but it allows you to harness the full power of Flurry Crash analytics.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>When fully leveraged, the Flurry Crash Analytics UI displays the events, breadcrumbs, and crash details in a single time ordered list capturing all pieces of information related to the session in which the crash occurred. This unified view can provide sufficient information required to reproduce the steps that led to a crash and as such can be of great help when improving the code to address the reported crash.  </span></span></span></span></span></span></p> <p><img alt="The Flurry Crash Analytics user interface displays the events, breadcrumbs, and crash details in a list" data-entity-type="" data-entity-uuid="" src="https://www.flurry.com/sites/default/files/flurry-crash-analytics-user-interface.png" width="80%/" /></p> <h5><span><span><span><span><em><span>Fig. 1: The Flurry Crash Analytics user interface displays the events, breadcrumbs, and crash details in a list.</span></em></span></span></span></span></h5> <h2><span><span><span><span><span><span>Getting Started with Flurry Crash for iOS & Android</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Crash reporting is a standard feature of the Flurry Analytics SDK. In other words, integrating Flurry Crash Analytics does not require a separate SDK. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Getting started with Flurry Crash Analytics is easy. If your app is already integrated with Flurry, skip ahead to Step 3. </span></span></span></span></span></span></p> <p><span><span><span><strong><span><span>Step 1:</span></span></strong></span></span></span><span><span><span><span><span><span> </span></span></span></span></span></span><a href="https://login.flurry.com/signup"><span><span><span><span><span><span><span><span>Sign up for a free account</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> and add your app to Flurry. </span></span></span></span></span></span></p> <p><span><span><span><strong><span><span>Step 2: </span></span></strong></span></span></span><span><span><span><span><span><span> Integrate Flurry’s SDK in about 5 minutes. You can do this via CocoaPods (iOS), jcenter (Android), or let us walk you through easy integration steps. Find step-by-step integration instructions for </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/integrateflurry/ios/"><span><span><span><span><span><span><span><span>iOS</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>,  </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/integrateflurry/android/"><span><span><span><span><span><span><span><span>Android</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>, </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/integrateflurry/react-native/"><span><span><span><span><span><span><span><span>React Native</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>, or </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/integrateflurry/unity/"><span><span><span><span><span><span><span><span>Unity</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>  in our documentation pages. </span></span></span></span></span></span><span><span><span><span><span><span>Once you complete this step, your app’s data will flow into your Flurry dashboard.</span></span></span></span></span></span></p> <p><span><span><span><strong><span><span>Step 3:</span></span></strong></span></span></span><span><span><span><span><span><span> Enable Flurry Crash with an additional line of code:</span></span></span></span></span></span></p> <p><span><span><span><span><span><span><strong>iOS: </strong>In iOS, only a single crash processor can be active. For this reason, the Flurry Analytics SDK does not enable crash by default and requires you to enable it explicitly. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>ObjectiveC example:</span></span></span></span></span></span></p> <pre> <code>FlurrySessionBuilder* builder = [[FlurrySessionBuilder new] withCrashReporting:YES]; [Flurry startSession:flurryAPIKey withSessionBuilder:builder]; </code></pre> <p><strong><span><span><span><span><span><span>Android: </span></span></span></span></span></span></strong><span><span><span><span><span><span>On Android, Crash Analytics is enabled by default and requires no explicit call to send Crashes to Flurry Analytics. This means that data for your Android apps is already flowing into Flurry Crash Analytics. For Caught Exceptions and Logged Errors, you can optionally update your error handling methods, with the method call below, to log these issues into Flurry:</span></span></span></span></span></span></p> <pre> <code>new FlurryAgent.Builder() ... .withCaptureUncaughtExceptions(true) ... .build(this, FLURRY_API_KEY); </code></pre> <p><strong><span><span><span><span><span><span>React Native:  </span></span></span></span></span></span></strong></p> <pre> <code>new FlurryAgent.Builder() ... .withCrashReporting(true) ... .build(FLURRY_ANDROID_API_KEY, FLURRY_IOS_API_KEY);</code></pre> <p><strong><span><span><span><span><span><span>Unity:</span></span></span></span></span></span></strong></p> <pre> <code> new Flurry.Builder() .WithCrashReporting(true) ... .Build(FLURRY_API_KEY);</code></pre> <p><span><span><span><span><span><span>With this basic setup, the Flurry Dashboard will be reporting on all the crashes in your app.</span></span></span></span></span></span></p> <p><img alt="With basic setup complete on iOS or Android, the Flurry Dashboard will be reporting on all the crashes in your app." data-entity-type="" data-entity-uuid="" src="https://www.flurry.com/sites/default/files/flurry-dashboard-crash-reporting.png" width="80%" /></p> <h5>Fig. 2: <span><span><span><span><em><span>With basic setup complete on iOS or Android, the Flurry Dashboard will be reporting on all the crashes in your app.</span></em></span></span></span></span></h5> <h2><span><span><span><span><span><span>Journey to Crash: How to Log the Events Leading Up to a Crash</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>To help developers efficiently isolate the causes of the app crash and to resolve the bug that resulted in the crash, Flurry Crash Analytics exposes the additional features: the upload of the mapping files and Breadcrumbs. Flurry Crash Analytics creates a Journey to Crash - the time ordered list capturing all the steps that led to the crash. In addition, it combines all the CustomEvents logged within the app prior to the crash.  </span></span></span></span></span></span></p> <h3><span><span><span><strong><span><span>Mapping Files Upload</span></span></strong></span></span></span></h3> <p><span><span><span><span><span><span>To  get details of every crash, error, and exception, including the number of occurrences and the detailed stack trace, upload your dSYM or Proguard mapping files in the </span></span></span></span></span></span><a href="https://dev.flurry.com/developer/crash/overview"><span><span><span><span><span><span><span><span>Single App Overview</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> section. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>You can also integrate the mapping file upload with your development workflow. The scripts to do so, for iOS and Android apps, are available on </span></span></span></span></span></span><a href="https://github.com/flurry/upload-clients"><span><span><span><span><span><span><span><span>Flurry’s Github repository</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span><img alt="Upload mapping files for iOS or Android apps to help developers efficiently isolate the causes of the app crash" data-entity-type="" data-entity-uuid="" src="https://www.flurry.com/sites/default/files/flurry-crash-upload-mapping-files.png" width="80%" /></span></span></span></span></span></span></p> <h5>Fig. 3: <span><span><span><span><em><span>Upload mapping files for iOS or Android apps to help developers efficiently isolate the causes of the app crash.</span></em></span></span></span></span></h5> <h3><span><span><span><strong><span><span>Breadcrumbs</span></span></strong></span></span></span></h3> <p><span><span><span><span><span><span>As the name implies, the Breadcrumbs are just that, traces of information left throughout the app’s code to help trace the flow of events a user experienced leading up to the crash. The app developers leave the Breadcumbs throughout the code, capturing the valuable information to help themselves understand the execution of code outside of what's recorded in the stack trace. Knowing the sequence of things the user did within the app before it crashed, helps developers reproduce the crash and diagnose the problem.  </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Add the breadcrumbs throughout your code using the Flurry SDK API to log the breadcrumbs:</span></span></span></span></span></span></p> <p><strong><span><span><span><span><span><span>Android: </span></span></span></span></span></span></strong></p> <pre> <code>FlurryAgent.logBreadcrumb(BREADCRUMB_ERROR_MESSAGE);</code></pre> <p><strong><span><span><span><span><span><span>iOS: </span></span></span></span></span></span></strong></p> <pre> <code><span style="color: #aaa !important;">[Flurry leaveBreadcrumb:@"BREADCRUMB_ERROR_MESSAGE"];</span></code></pre> <p><span><span><span><strong><span><span>Custom Events</span></span></strong></span></span></span></p> <p><span><span><span><span><span><span>To enhance crash reporting and identify exactly where crashes occur in your app, integrate custom events. With custom events integrated, you will unlock endless possibilities to analyze your app’s audience and how your users use your app. For step-by-step instructions, please visit our documentation pages for </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/analytics/gettingstarted/events/ios/"><span><span><span><span><span><span><span><span>iOS</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> and </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/analytics/gettingstarted/events/android/"><span><span><span><span><span><span><span><span>Android</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>. </span></span></span></span></span></span></p> <h2><span><span><span><span><span><span>Real Time Crash Analytics & Reporting! </span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Flurry Crash Analytics gives you a number of tools to tune into the crashes as soon as they are happening.  </span></span></span></span></span></span></p> <p><a href="https://dev.flurry.com/metrics/1000"><span><span><span><strong><span><span><span><span>Realtime Crash Dashboard</span></span></span></span></strong></span></span></span></a><span><span><span><span><span><span> is, just as the name implies—a real time numerical chart of the crashes happening without specific details as to what those crashes are. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span><img alt="Flurry Realtime Crash Dashboard reports app crashes in real time." data-entity-type="" data-entity-uuid="" src="https://www.flurry.com/sites/default/files/flurry-real-time-crash-reporting.png" width="80%" /></span></span></span></span></span></span></p> <h5>Fig. 4: <span><span><span><span><em><span>Flurry’s Realtime Crash Dashboard reports app crashes in real time.</span></em></span></span></span></span></h5> <p><span><span><span><span><span><span>To dig deeper and to get the accurate, timely information of the crashes as they are happening in real time, there are further options: </span></span></span></span></span></span></p> <h3><span><span><span><strong><span><span>Jira Integration</span></span></strong></span></span></span></h3> <p><a href="https://developer.yahoo.com/flurry/docs/analytics/crash/jira/"><span><span><span><span><span><span><span><span>Integrate your Jira Cloud instance</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> and Flurry Crash Analytics will automatically create a ticket in your Jira instance as soon as a crash occurs, for the first time. </span></span></span></span></span></span></p> <h3><span><span><span><strong><span><span>Slack Integration</span></span></strong></span></span></span></h3> <p><span><span><span><span><span><span>Similarly to Jira Integration, after you provide Flurry with the </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/analytics/flurryalerts/slack/"><span><span><span><span><span><span><span><span>webhook URL</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> of the slack channels where the alerts are to be delivered, Flurry Crash Analytics will be sending all the new crash incidents to that slack channel. </span></span></span></span></span></span></p> <h3><span><span><span><strong><span><span>Crash Alerts</span></span></strong></span></span></span><span><span><span><span><span><span> (email, Slack, and push notifications)</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>You can monitor crash occurrences, such as Total Errors, Symbolicated Crash Devices,  Symbolicated Crash Occurrences, Symbolicated Crash Impact Rate and receive alerts via email, Slack or - if you have the </span></span></span></span></span></span><a href="https://www.flurry.com/flurry-app/"><span><span><span><span><span><span><span><span>Flurry mobile app</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> - as push notifications.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Visit </span></span></span></span></span></span><a href="https://dev.flurry.com/developer/crash/historical"><span><span><span><span><span><span><span><span>Flurry’s Crash dashboard</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> to begin reviewing and addressing the individual crashes in your app. You are now all set to manage and respond to crashes, errors and exceptions in your mobile app. Please see our </span></span></span></span></span></span><a href="https://developer.yahoo.com/flurry/docs/analytics/crash/crashanalytics/"><span><span><span><span><span><span><span><span>documentation pages</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> for more detailed information or reach out to us at </span></span></span></span></span></span><a href="mailto:support@flurry.com"><span><span><span><span><span><span><span><span>support@flurry.com</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> with any additional questions.</span></span></span></span></span></span></p> </div> Wed, 16 Dec 2020 16:05:02 +0000 LisaMoshfegh 587 at https://www.flurry.com