Improve User Experiences on Any Platform With Pulse for Mobile

DZone 's Guide to

Improve User Experiences on Any Platform With Pulse for Mobile

Raygun is officially releasing full support for mobile applications to go alongside existing support for web-based applications. So you can now enjoy real user monitoring on either platform!

· Mobile Zone ·
Free Resource

Pulse Real User Monitoring from Raygun gives you the power to take a deep dive into exactly how your end users are navigating through your applications, and where they may be experiencing problems like slow page load speeds or problematic scripts.

Today we are officially releasing full support for mobile applications to go alongside existing support for web-based applications. So you can now enjoy real user monitoring on either platform!


During our open beta of Pulse for mobile, we’ve received great feedback and suggestions that allowed us to refine and enhance Pulse for mobile. The insights you gain from Pulse will cut down the time spent wondering what to improve and will take you straight to the real problems your end users are facing.

See how to get started with Pulse for web or Pulse for mobile.

What we’ve added since our Pulse for mobile beta launch:

  • New automatic network logging for Android
  • Expanded iOS automatic network logging coverage
  • Added filtering for view and network information
  • Updated Pulse for mobile dashboards

Automatic Network Performance Logging for Android

Raygun4Android will now automatically report the time it took to make a successful network request using java.net.HttpURLConnection and javax.net.ssl.HttpsURLConnection classes.

The duration of the network request will be tracked and reported in the performance tab of your application under network calls:

networklogging in Pulse for mobile aplications

Expanded Automatic Network Performance Logging for iOS

We have expanded our coverage of automatic network logging to include NSURLSession methods that make use of NSURLSessionDelegate callbacks. Below is the full list of methods that are automatically logged on iOS.

[NSURLSession dataTaskWithURL:] [NSURLSession dataTaskWithURL:completionHandler:] [NSURLSession dataTaskWithRequest:] [NSURLSession dataTaskWithRequest:completionHandler:] [NSURLSession downloadTaskWithURL:] [NSURLSession downloadTaskWithURL:completionHandler:] [NSURLSession downloadTaskWithRequest:] [NSURLSession downloadTaskWithRequest:completionHandler:] [NSURLSession uploadTaskWithRequest:fromData:] [NSURLSession uploadTaskWithRequest:fromData:completionHandler:] [NSURLSession uploadTaskWithRequest:fromFile:] [NSURLSession uploadTaskWithRequest:fromFile:completionHandler:] [NSURLConnection sendAsynchronousRequest:queue:completionHandler] [NSURLConnection sendSynchronousRequest:returningResponse:error:]

Filtering View and Network Information

A few updates have been made to the mobile providers to allow a more customizable Pulse experience. Not all information Pulse for mobile reports share the same importance, so we make it easy to filter out that information before it’s sent to us.

You can filter out the reporting of view information by view name. For iOS this will be the name of the controller class and on Android it is the activity’s name.


[[Raygun sharedReporter] ignoreViews:[[NSArray alloc]initWithObjects:@"RootViewController", nil]];


RaygunClient.ignoreViews(new String[]{ "MainActivity" });

If you don’t wish the performance of certain network requests to be logged, you can filter them out by URL.


[[Raygun sharedReporter] ignoreURLs:[[NSArray alloc]initWithObjects:@"raygun.com", nil]];


RaygunClient.ignoreURLs(new String[]{ "raygun.com" });

We also provide the option to disable network performance logging entirely when attaching Pulse.


[[Raygun sharedReporter] attachPulseWithNetworkLogging:false];


boolean withNetworkLogging = false; RaygunClient.attachPulse(this, withNetworkLogging);

Updates to the Pulse for Mobile Dashboard

We have updated and added new modules to the Pulse for mobile dashboard. In the performance tab you will find new modules for the slowest views and average load time.

You can now see at a glance which of your views may need some performance optimizations and how they are performing over time. For example, below in the slowest views module image we can see that ‘DataViewController’ may require the most attention to improve the user’s experience as it has the longest load time in your application:

slowest views ios module in Pulse for mobile applications

The image below shows the average load times for sessions during a certain time period. This is a useful way to see the differences between the fastest and slowest load times, and to check whether any actions should be taken to reduce the load differences:

performance load time distribution shown in Pusle for mobile applications

Modules in the view tab have also been updated to include the average load time for a view, giving you a chance to spot frequently seen views with poor performance:

most viewed with loadt imes ios - shown in the module inside Pulse for Mobile applications

The frequent last views module shows the last view the user saw before leaving your application. Adding the load duration helps to highlight the possibility that long load times is the reason why users end their session on this view:

frequent last views with load time ios shown in Pulse for mobile applications

We have continued the same improvements when inspecting a user session in more detail. We added an overall session average for view load times to the session overview:

session over view new load time ios shown in Pulse for mobile

The session trace blocks now include the individual view load times, giving you a clearer breakdown on where users are spending their time:

session detail load time ios - shown in Pulse for mobile applications

webdev ,mobile ,user monitoring ,raygun

Published at DZone with permission of Freyja Spaven , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}