How to track app installation in iOS

Is there a way in iOS to check if user has installed a particular app on his device?

I am using one of my app (Promoting App) to promote my other apps. When a user installed one of my other apps, I want to record this install in my app (Promoting App).

Replies

Are both of these apps published by the same team?

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

No, they are not from the same team.

i think you may use the “idfa” for tracking with the permission by user

Can you please clearfy how IDFA will help my app to Track Install?

No, they are not from the same team.

That makes things harder. Let’s say app A wants to tell whether app B is installed. Presumably you control app A and can make changes to it. Do you control app B? Can you make changes to that?

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

No, I don’t have any type of control over App B.

Can somehow App B save something in any shared directory (if iPhone allows), so that app A can check if app B has been installed and opened. (They may not be from the same team).

No, I don’t have any type of control over App B.

Can somehow App B save something in any shared directory …

If you don’t have any control over app B, how are you going to convince it to save some data in a shared location? Regardless, the iOS sandbox won’t allow this; there is no place on the file system when app B can write that app A can read.

The traditional approach for this sort of this is to have app B publish a URL scheme that app A can look for using

+[UIApplication canOpenURL:]
. However, if you have no control over app B then this will only work if app B already publishes a unique URL scheme.

IMPORTANT There have been some recent privacy-related changeds in this space; watch WWDC 2015 Session 703 Privacy and Your App for the details.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

As per my knowledge, for

+[UIApplication canOpenURL:]

To work,

App 'A' has to declared in his Info.plist App ‘B’ 's URL Scheme

Right?


What if App ‘A’ has not declared App B's URL Scheme?

App ‘A’ only has the knowledge of App ‘B’ ‘s Bundle Identifier and its Apple ID.

What if App ‘A’ has not declared App B's URL Scheme?

I’m not sure why that would be an issue. Given that you control app A, why can’t you just change it to reference app B’s URL scheme?

It sounds like your end goạl is for app A to be able to test for the presence of arbitrary apps without exposing that test to App Review via its

Info.plist
. If that’s the case you’re are not going to be able to achieve that goạl; the WWDC session I referenced above clearly explains why that’s the case. Attempting to work around privacy restrictions like this generally doesn’t end well.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"