Set up usage analysis out of App Center and App Insights - ios

So we have an iOS client integrated with App Center. We have also turned on export into App Insights. The goal is simple - implement Log Analytics queries to understand usage patterns, like
most popular screens
time spent on a screen per session
time spent on a screen Y by users from location X
what screen is the last one before people exit and so forth
An alternative would be to make data appearing at "Analysis of Page Views" tab in App Insights.
So when and how to generate events on the client to make it happen?

Once you have your app integrated with Appcenter SDK, You can set up custom events in your app.
Please see this link for ios on how to set up custom events.
On App center portal , on the Analytics overview page, among other usage and engagement metrics, you can get details on Sessions such as Session duration: Distribution of the number of sessions over a few duration intervals, Daily sessions per user: Daily average number of sessions per user.
When you export Analytics data to Application Insights, you can segment your audience refer to usage-segmentation and also you can analyze the user flow
Hamsa

Related

Facebook Analytics SDK for iOS app: how to disable value tracking for non-valuable events like App Install or Start Trial?

I'm running Facebook Ads campaigns for my iOS app and quite naturally I have Facebook Analytics SDK integrated inside my app to track App Installs and Start Trial events to measure the "quality" of the traffic my campaigns bring.
At the Analytics settings page inside Facebook developer dashboard.
https://developers.facebook.com/apps/XXX_APP_ID_XXX/analytics/settings/?business_id=XXX_BUSINESS_ID_XXX
I have the option Log In-App Events Automatically (Recommended) set to "Yes", which I presume enables the tracking of App Install and Start Trial events. There's also a Shared App Secret field filled in with the value from iTunesConnect.
Indeed, the App Install and Start Trial events have started to appear inside Analytics dashboard
https://www.facebook.com/analytics/XXX_APP_ID_XXX/AppEvents?__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
However I noticed when viewing the stats for just App Installs there's a quite considerable value in USD attributed to these events. I decided to take a closer look into these events using Event Debugging
https://www.facebook.com/analytics/XXX_APP_ID_XXX/most_recent?since=1577923200000&until=1580256000000&__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
and selecting "App Install" in the events filter.
There I saw that some (only some and as if randomly) App Installs have a value associated with them. To me this is an unexpected behavior since I can't imagine revenue being made by just receiving an install.
Same goes for Start Trial event, which always has the value associated to it (equal to the sale price of a subscription period) and once again this makes no sense to me because started trials themselves bring no value to me. They may be canceled or may end up in Billing Retry when the user has no money on the bank card attached to their iTunes account, etc. I track the conversions from Start Trial to Purchase on my backend separately with great precision and only these conversions as well as subsequent renewals would bring real value to my business.
I can and will track these Purchases manually and post them to Facebook (server-to-server style) and I will supply the corresponding value to these events myself, which will help to understand the overall performance and ROI but I need to clean my stats from these "false" automatically and erroneously attributed values to App Install and Start Trial events first.
I've already reported this issue to Facebook few days ago, however they seem to be slow in handling such requests so I've decided to ask here if anybody ran into similar issue.
Add this to your plist file to disable Auto Event Logging
<key>FacebookAutoLogAppEventsEnabled</key>
<false/>
Thanks to Lena Bru for giving enough food to find a solution.
The Facebook documentation is scarce on the raised questions and the support answer literally headed me towards the documentation. To recap things, there were 2 main issues (the second one I've mentioned in the comments to Lena's reply):
Facebook was tracking value for the events, which brought no value to my business
Some of the events I've sent from backend didn't appear in the campaign reports
To solve both of these problems, I:
Turned off the value tracking option in the Facebook app settings
On the client side I've started setting up User ID (which the client receives from backend) according to Facebook documentation
I've started to send all of the events, which I wanted to view inside Facebook business cabinet, under custom names from backend. I've supplemented them with app_user_id parameter (see Advanced Matching for App Events in Facebook documentation) so that they could match the App Installs reported from client.
There's still a smaller issue left (it feels like Facebook reports include 20% less installs than actually happening) but the current setup is already something to begin with.

Is it possible to retrieve data from the Settings App?

Is it possible to access the data contained within the Battery view inside of the Settings App. More specifically, I am interested in the amount of time that has been spent on screen for each application.
I saw this app as well and was wondering how it works so I downloaded the app and the Moment app actually uses as notification to prompt you to screenshot the battery life each day which I assume it then uses OCR to read the data from the screenshot.
See attached images for the detailed app flow.
Not really, the information you want are from Private API's and unfortunately apple doesn't allow it.
But you can get some basic information and notifications related to battery settings like:
Battery State
Battery Percentage Level
Battery Monitoring - Enabled / Disabled
For more reference check this Link.

How could the Google Analytics session count be greater than the screen count?

We use the v3 Google Analytics iOS SDK. We are currently using google's automatic session management in production. Every screen on the app is tracked. My average session time is 25 minutes. Session time is skewed either very low or very high. 30% of sessions are 0-10 seconds and 60% are 181+ seconds.
Google's documentation says that they count each screen view, even if the user comes back to the same screen after the app is in the background. I verified that is true based on testing in a controlled environment. First I added manual session tracking to the app using this. I opened the app for the first time in a brand new Google Analytics app-id at 12:36pm. Then I put it in the background. Then opened it again and backgrounded it again. After 15 minutes I had a correct session count of 2 and a screen count of two. Then I removed the manual session counting and did two more sessions at 12:55pm. After about 10 minutes, my session count was 3 and my screen count was an accurate 4. The session count with the automatic tracking seemed to be off by one, but on the low side. Given this test, I can't understand what's going on in production.
Logically, each session necessarily requires at least one screen view. So how could the session count be greater than the screen count in production? What I'm seeing is that the session count is about double the screen count. How could this be?
So it turns out that if you're using background fetch or background location services, thedidFinishLaunchingWithOptions AppDelegate method is called - and the Google Analytics libraries tell you to put the session startup code there. If you gate that code around the UIApplicationState, you can avoid the phantom sessions. (See more here: http://mikethinkingoutloud.com/issues-with-google-analytics-and-ios-7-background-fetch/)

Google Analytics for iOS 1-time (per user) event tracking

I am using Google Analytics iOS SDK (version 2 but will upgrade if it solves problem). How can I track what percentage of my app users have pressed a certain button at least once? I set up a lot of event tracking, thinking this would do it, but the reports are in terms of sessions not users. E.g., it will show what percentage of sessions included an event, so a single user may be counted multiple times. I defined a custom dimension variable that is unique for each app install, but I don't see how to use that as aggregation unit.
All I can think of is to define my own "one time events" by keeping my own database on the device and only pass to Google Analytics the first time it occurs. Is there no better way?
Google Analytics now offers User segment. You could create a user segment, and use the particular event you're interested in as a condition.
In the context of app measurement, a User is defined as a unique Client ID, which is the random ID generated by the GA SDK when the application first runs. It remains stable for as long as an app is installed.
More details here: http://analytics.blogspot.com/2013/07/re-imagining-segmentation-in-analytics.html

Visit data issues using Google Analytics with Adobe Air for iOS

We are using GA for Flash in our iOS app ported over with Adobe Air and are seeing some funky numbers being collected in Google Analytics. We ran some tests and saw that every time the app was opened it would count both a new visit and a new unique visit, even if it was just a minimize and re-open.
We would assume that the 30 minute time out would be in effect here and that even on a quick minimize and re-open that GA would count that as one visit. This doesn't seem to be the case.
Does anyone know how we could set-up the GA implementation to record unique visits based off of a user ID given on first launch of the app, and/or have it accurately count visits?
Has anyone seen something similar to this before?
Google Analytics allows you to set up Custom Events to track user interactions so this could be dispatched depending on a flag stored in a config file (to determine if it is the first time the application is run).
Depending on your implementation of Air, i.e AS3 / Javascript, if you are using AS3 you may have to utilise the ExternalInterface api to call a javscript method from the application.
This would then allow you to track these custom events and ignore the erroneous default visits?

Resources