Is there any way to determine if a user has a specific app installed, or even to count how many apps they have installed?
The information would be used to target information passed to the user.
Not on a stock phone. Jailbroken maybe, but I have not played with the jailbroken side of things.
You could try to open an app via a URL scheme. Using Twitter as an example, one of its URL schemes is twitter://user?screen_name=somename
You can check if you can open that URL:
NSURL *tURL = [NSURL URLWithString:#"twitter://user?screen_name=somename"];
if ( [[UIApplication sharedApplication] canOpenURL:tURL] )
// if here, you can open twitter app
You can extrapolate from here if you want.
Yes if the apps in question are known to you as a developer of that feature and do implement custom URL schemas (which you also need to know). There is a service that tries to collect that information: handleopenurl.com
Short answer: No.
Long answer: there are ways to detect if certain apps that provide the capability are present. For example, the Facebook app (see this question). However, it is not possible to detect apps that do not support that kind of detection, and it is not possible to get a total count of apps (unless, of course, they only had detectable apps, but the likelihood of that is incredibly slim).
Yes and No. On iOS, there are a few methods which can be used, but they won't get you the entire list, only some of the apps. Daniel Amitay has a nice framework for this. You can find it here (iHasApp)
I have used it and it gets most of the apps, but as I said, not all. Daniel explains in his blog post what techniques you can use.
Related
I am developing a mobile app in objective-c for iOS.
Is there a way inside my app to programmatically retrieve the most visited websites from the browsers on the device?
I am interested in the urls specifically (e.g. "http://www.google.com"), in order to check a couple of things.
I've searched online but I haven't find anything that could satisfy these needs: does every browser save this kind of information in a private folder not accessible to anyone else and so it's not possible to get this data? Or am I missing something else?
Thanks anyway for your answers
The answer is: No, it's impossible. Apple doesn't give as an API to do that.
No, the developed applications are sandboxed. You can't access data out of one app from another. It's part of the security model.
Apple didn't published APIs for this privacy access level, It only published the following APIs for Safari extensions:
https://developer.apple.com/documentation/safariservices/safari_app_extensions
BTW, This question is asked alot before, you can check them:
how to programmatically access iphone browser history
How to access iPhone Safari History in an App?
I have an app that uses
LSApplicationWorkspace's +defaultWorkspace and -allApplications, but I can't use these on the App Store.
What alternatives do I have?
What alternatives do I have?
If you are using LSApplicationWorkspace to detect what applications are installed? None.
Apple treats the list of installed applications as private, and have made deliberate changes to other APIs in the past to keep that information private. (For instance, iOS 9 applied limits to canOpenURL: to prevent it from being used to detect installed applications.)
If you need to detect other specific applications, and those applications implement custom URL schemes, you can still use canOpenURL: to check for those. However, you will need to declare these URL schemes ahead of time in your Info.plist, and you cannot detect applications which do not handle unique URL schemes.
Is it possible to read the contents of another application installed on an iPhone? What about from an extension or keyboard?
I'm trying to come up with something that 'checks' other apps to see if they have any deep links (like Twitter's Twitter://timeline that takes users straight to the timeline in the Twitter app).
Is there any smart way to check a given app for deep links?
Is it even possible to peek at another app's contents from within my app? I suspect no.
If no, what about making a keyboard or extension of some sort that I can access from an app like Twitter and see its contents, such as a URL deep link?
You don't have much options, you may use -canOpenURL:, but, since iOS9, must include special credentails listing all the custom schemes you want to check.
You can't read other app's contents on a non-rooted device unless this app is sharing a keychain (so it can exchange data via the shared keychain). The same thing goes with extensions.
iOS has some high bars on security, so, don't expect much or even, anything.
Something you may want is IntentKit. Also there are ideas around the web about standard url query format like MobileDeepLinking.
I'm a semi-technical UX designer looking for a technical solution on a topic where none of our developers are fully informed, so bear with me.
Our organization has multiple iOS apps, each of which does somewhat different things. I'd like to create a link between two of these apps such that an interaction in one app will open the other app and take it to a specific state.
If these were web applications, we could easily do this via a simple link. Is such a thing possible in the iOS world? And if so, without getting deep into the weeds on the technical details, can you point me in the general direction of the technical approach we would want to take so I can have our developers start researching further?
You probably want to forward your developers onto Apple's documentation on "Inter-app communication":
And most likely you'll want to use an app url scheme:
A URL scheme lets you communicate with other apps through a protocol that you define. To communicate with an app that implements such a scheme, you must create an appropriately formatted URL and ask the system to open it. To implement support for a custom scheme, you must declare support for the scheme and handle incoming URLs that use the scheme.
I would like to search the Apple App Store from within my app, and return App information such as Icon, Description, Name, etc.
I found some examples using URL's. But from what I understand, they cause your app to pause as it opens either the App Store or the browser. If I am mistaken, please may you provide me with an example on how to accomplish this (seemingly) simple task?
Regards,
Shane
I don't think there is an API available to do what you are describing directly in the iOS device. However, you could hack something together using the search API available from apple. Check it out at here. You could do this behind the scenes rather then using the browser. It's not a simple task, but it is doable. Besk of luck.