What code is needed to be notified in real-time whenever my iOS app is downloaded? - ios

I recently published my first iOS app and felt really dissatisfied with apple's iTunesConnect portal for tracking app sales. Specifically, I can't tell what time of day the app was downloaded, and I have to wait for the results until the next morning.
Does anyone know a piece of code that can be unobstrusively inserted in my app that will somehow report to me after if has been installed for the first time? I don't want any privacy/rules violations, I just want the app to report that it has been downloaded, and maybe a few metrics regarding country/time/etc.
Thanks for the help!
EDIT:
Regarding a first run 'phone home,' is it possible to execute some HTML without having the user knowing (I don't want to interrupt their experience by opening a webbrowser). For example, some javascript from a statcounter? If not, what can I do?

There are a lot of analytics tools that can help you get better metrics.
Flurry
Google Analytics
Mixpanel
Kissmetrics
Google analytics gives you usage information in real time, which is nice.
Also, if your users log in through Facebook, they provide some interesting analytics as well.

Related

Firebase & iOS 14 > Will dynamic links tracking and campaigns continue to work?

As most of you are probably aware of, iOS 14 will basically put an end to app acquisition tracking as we know it.
Here are two great articles that explore the issue in length:
The App Attribution Industry Is Dead
How To Prepare Your Mobile App and Attribution Stack for Apple’s iOS 14 Privacy and IDFA Changes
Putting aside the critical changes most people will have to make to their business models, my question has to do with Firebase's dynamic links in particular.
Since they basically rely on copying a link in the pasteboard, I already know they might now trigger a warning banner — although the Firebase team has apparently been proactive with this matter.
What I don't know at this point is whether they will continue to work or not when users disallow ad tracking.
My team and I have tried building one of our React Native apps with XCode 12 beta on a simulator running iOS 14, but haven't been able to retrieve any value from the dynamic links — whereas it currently works with iOS 13. There might be other factors at play though, so it's difficult to draw our own conclusions at this point.
My questions, provided that the users have opted out of tracking:
Will we still be able to read the dynamic link url in-app?
Will Google Analytics still receive the UTM parameters and get campaigns' results?
If the answer is no to any of these questions, what are the workarounds or third-party solutions you've found?
Your insights will be greatly appreciated!
According to Google's blog post: https://firebase.google.com/docs/ios/supporting-ios-14
If IDFA is not accessible:
No impact for link-opening functionality
When used with Google Analytics, attribution for link conversion events is unavailable.

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.

iOS app trouble storing user's documents/photos anywhere other than the phone

I'm trying to find a way of letting a user store their photos/documents online for my app. They can upload these to the app after registering an email and they remain on the phone even when the user logs out and then in again. However if the user deletes the app, downloads it again (the developers are using TestFlight at the moment), and logs in, any photo or document that the user saved before deleting has vanished.
I've been told that the data hasn't been stored on the Kinvey SDK service that we have been using as it takes a while to upload the data and then was told the app would be better suited on Kinvey REST API as the SDK version doesn't support background mode which supposedly would help store the data quicker (but this still wouldn't be 100% sure the photos/documents would be stored)
I'm not a developer/coder so I'm afraid I don't know much technically but my app needs to be able to have access across devices for the user's photos and documents, if these are 'lost' it would be catastrophic.
Please could someone help me if there a way of doing this?
Thank you.
Well If you want to save pictures or data that do not get deleted here are few options.
Save them iPhone,iPad gallery if not the use REST API
"Kinvey" can be used for that.
The alternative of "Kinvey", Kindly look into this.
https://www.raywenderlich.com/126098/top-5-parse-alternatives.
and may be you can try this. It provides chat feature too.
http://quickblox.com/

How to work with Firebase App Indexing for IOS Apps

i am in the process of making my app with firebase i am pretty much done with that except Firebase App Indexing. I am very exited with this feature because it could help me to increase my app get more traffic from the web but the problem is i really can't able to see how to implement this. According to Firebase Docs i just need to register my app with this pice of code
[[FIRAppIndexing sharedInstance] registerApp:your Apple ID from iTunes Connect];
I have done that but what should i do after that?
1.My app is firebase app that means i don't have any website to host my content except firebase realtime database. Does my content is available for crawlers? if not how can i make available to them?
2.If i can able to show my content in the google search results i don't wanna show all the content and i wanna show just some of my content for example i have a social app for sharing General Knowledge questions, i wanna show just the question like "What is the highest mountain" in the search results and if the user want to see the answer it should take them to my app how can i do that?
3.As per docs i came to know that i need to create univiersal links for my app content to direct users from google search but how shold i do that ? Lets say should i crate universal links when the user create question?? if so how can i do that ??
Thank you very much for the help.
This is not currently possible on iOS using Firebase App Indexing. The situation is slightly different on Android, but that is not applicable to your question.
On iOS, Firebase App Indexing is simply highlighting pages on your website in Google search results that have corresponding content inside your app. This is achieved by piggybacking on Apple's Universal Links standard, and there is no proactive 'crawling' going on inside your app. This means unless you have a corresponding web page for your app with 1:1 content parity, you can't really benefit from Firebase App Indexing on iOS as it comes out-of-the-box.
The best workaround is to generate little 'placeholder pages' for every piece of content in your app, which the sole purpose of opening your app (if it is installed) or redirecting to the App Store (if it is not installed). Ideally you'll need some sort of deferred deep linking system so that users still see the correct content after downloading. Fun fact: this is essentially how HotelTonight operates their entire business model. Unfortunately Firebase's implementation is not mature enough to support this full flow, and Google hasn't quite figured out how to rank app-only content properly yet in search results so you will probably need to pro-actively submit your placeholder pages to them.
Shameless plug: at Branch, we provide all of the above as a free service. You can read more about it here and take a look at the set up docs here.

Determine whether an app launch came from an AdMob click

I'm trying to figure out whether the users I get from ads will buy in-app purchases frequently enough to justify the cost.
Is there any way an iOS app can tell whether the user has clicked on an AdMob ad in the past? Their Download API only seems to show aggregate data. I'm open to using any other network if they let me do this!
If there's anything in the HTTP request from an ad which would give me the user's magical ISU string, I'd be happy to bounce ads through my own server and implement my own tracking.
Thanks!
AdMob doesn't have any way of querying for this.
I decided to bounce ads through my own server and have the app query it later. If the server finds an ad click which came from the:
Same IP address
Same Device type
Same system version
it will tell the app that it came from a paid click.
Of course the problem with this is that I lose data on some unknown number of ad-click installations. I'd like to know how many I'm losing, but I don't know if there's a way to use AdMob's app conversion tracking together with ads which go to arbitrary URLs.

Resources