Way to track users between apps? - ios

Let's say I have 3 apps, how can I track users between those apps? I want to see if a user in one app has downloaded a second app of mine and combine that data on the backend. I know I could ask for some sort of identifier (email, phone, etc.), but how can I do that without doing that? I don't think I am allowed to use the IDFA for this, but I'm not 100% sure.

The first thing you should do is check to see if any of your other apps are installed. You should give your apps a custom URL scheme (as posted by #mika) so they can be found. Then check to see if the app exists on the device by checking:
if ([[UIApplication sharedApplication] canOpenURL:yourCustomURLScheme])
To share the data between the apps, configure an app group for your apps.
From the Apple Docs:
Use app groups to allow multiple apps access to shared containers and
allow additional interprocess communication between apps. To enable
app groups, in the Capabilities pane, click the switch in the App
Groups section. You can select existing app groups from the table or
add app groups.
I believe that this would be a simple way of "tracking" them.

You could use Custom URL Scheme to find out what of your apps were installed by a user.
http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
Then you can flag you tracking data accordingly.

Google Analytics can be configured to share tracking between apps. https://support.google.com/analytics/answer/2587087?hl=en

Related

Link to a specific section of my app, or the app store if it hasn't been downloaded?

I'm in the process of updating my iOS app, and one feature that I'd love to add would be the ability to create links (to send via email, or for social media) that would allow users who have downloaded the app to be taken to a certain section of the app, and users who haven't to be taken to the app store page for my app. I also want it to take desktop users to the itunes page for my app.
Now, I've been looking into url schemes as I think this is the way forward, and have managed to create a custom url scheme that will indeed take users to different parts of my app. However, I'm struggling to find a way to check if the app has been installed, and what device the user is on etc.
Would I need to use a server to redirect them to the correct place?
Thanks!
I found out the best way to do it is with universal links, introduced in iOS 9.
https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9/

iOS Verify App Installation success

I want to create a cross promotion on my app, and give bonus stuff after user installs and runs my other applications. Is there any easy way to do this? I have looked at the iOS8 plugins functions, but this also needs to work on iOS7. Any suggestions?
Use custom URL schemes in both your apps and after that just check if the iOS system has the URL scheme registered. If so, then the user had installed the other app.
Here's an example on how to do it.
For this to work across multiple devices I'd probably say you'd need to implement a webservice that stores the users information such as a unique identifier for that user (Not device) so something like the users username and update it with the new app that they have just downloaded and installed and signed in using that username.
If this is just on a per device basis you could probably do it using Custom URL Schemes. Each of your apps would have a Custom URL Scheme and when the user opens the app you can do a check to see if any of the other Custom URL Schemes are installed on that device by using [[UIApplication sharedApplication] canOpenURL:] and if this returns true then that app is installed.
Here's the Apple Documentation for Inter-App Communication

Can I do an app like Find my iphone in iOS?

I want to create an app which has the following features.
Track friends / family members location
Locate/track the stolen device location
Lock the device, delete the device datas by using desktop or by SMS.
Most of the above features are provided by Apple's "Find my iPhone" app. But I just want to know whether is it possible to create such an app.
From my understanding, Apple wont let the developers to use private API's and they wont allow to erase datas (like Messages, Calls details) remotely.
Please suggest me some ideas.
If you create any app which directly competes with any of the apples build app will be rejected by appstore.. But most of the above things you can do with private api's and with the help of a web service..
It wasn't possible prior to iOS7. App was not able to respond to any remote calls. There is a new API which "can" be used to solve similar things: http://mobile.tutsplus.com/tutorials/iphone/ios-7-sdk-mutlitasking-enhancements/ or http://www.objc.io/issue-5/multitasking.html (Remote notifications). You may be able to track your friends or stolen device, but not to lock or erase it.
There is a way to remotely erase the iPhone without Apple's Find My iPhone - via Exchange account. There are some open source implementations of MS Exchange, so there may be a chance to make a service which would be able to wipe the device. But even when you make that service, there will be a need to add the "exchange account" into the iDevice. I am not aware of any function which can do so programmatically.
Anyway - You can do an app which is similar to Apple's apps, but it must be somehow different. It must provide some special content or functionality, otherwise it will be rejected.

Store temporary data outside of iOS app

I have an app that is uniquely branded for each customer (think restaurants, etc.) I need to have the user be able to click on a link to my server that contains a unique code, stores that temporarily on the iOS device (cookie, etc.) and then directs them to the app store to download the app. Then when it is downloaded, the app grabs that cookie or temp. data on launch and brands the app for that customer. I know this is possible on Android, but is it on iOS?
Downloading the app first and then selecting the brand (or restaurant) is not feasible in this case, as the url wil be shared with other customers of the same business and we want to create a fluid experience, where they won't be able to "see behind the scenes" and choose a different branding.
Thanks
Edit
Thank you for all the replies. We've reevaluated and are considering having the url be opened on the device and grabbing the IP address or another unique id, and saving that along with the correct brand to a database. The app will then connect to the database on launch, and if the IP's match, will brand accordingly. We're looking for a more reliable identifier than IP, however. Now that UDID is deprecated, are there any other identifiers we can use?
I think the design you propose of a webserver link creating the code that needs to be read by the iOS app later is the issue. You should have a solution that is entirely app based. Perhaps you can have the same services on the website be available as one app which then sets up the code in pasteboard. The user then launches the actual app that looks at the pasteboard and skins itself accordingly.
That being said, data can be shared between apps from the same app seed ID by using UIPasteboard in addition to a few other ways.
I use the pasteboard to share info between apps quickly and easily using this class.
You can use identifierForVendor (UDID replacement) to identify individual devices. Are you planning on harvesting those identifiers prior to the end user "registering" the device at the final location? If not you'll never be able to determine which device belongs where.
What about having the end-user logging into your server as that restaurant? It can be a somewhat generic login per restaurant like "Wendys/Wendys5?" and "McDonalds/McDonalds7!" to determine their App Store URL. As long as the password is easy and non-programmatic to guess it would be unlikely they figure out how to register as a different restaurant. You could also do a simple restaurant selection screen coupled with a password specific to each chain but this would expose the user to which other restaurants are using the app. This way you won't have to continually add IPs if they expand locations and can revoke credentials if the login is compromised.
One question, though: Do all of your clients understand that they'll have to have an AppleID tied to each device? You can only shared a single AppleID across 20 devices.

iOS - Restricting use to single app

I am developing a business app for use on an iPad/iPod Touch. I am wondering if there is a way to restrict usage on the device to my app only. In other words, we don't want employees installing other apps such as games and playing around with the devices.
Yes, that's possible.
Check out the iOS Configuration Profile Programming Guide.
Edit: See the section about restrictions, it will allow you to do exactly what you need. Note however that you'll need to have access to those devices, ideally the devices should be company property. And you need to distribute your app via Enterprise Distribution.
Edit 2: Since iOS6, this feature is available through the normal settings app. It is called "Guided Access" and is part of the Accessibility settings. It will let you disable the home button (cancel guided access by triple-clicking the home button and enter the preset code) and it will even let you define areas within apps which should be disabled.
I don't think so, unless their device is jailbroken.
If they're logged into an Exchange server you could remote-wipe their phone if they install anything.
Do you provide the devices? Or they bring their own?
If you provide the devices that would mean you can use your Apple-id. If an employee would try to download any other app he would need the password of your Apple-id. So thats a simple way to prevent that.
Im am not sure if there is a total "lock" of such type.

Resources