- There was never any API for a third party app on iOS to get the time spent in another app. The only workaround I saw to this was an app that asked you to screenshot your app usage screen, and it was able to process those screenshots in an automated way (can't find the link).
- There is an API to open URLs between apps, so that one app can link to another app. When developers realized that they could check whether or not a given URL was openable to check if an app is installed, they started abusing this API to check every app on the system. Apple cracked down on the API in iOS 9 and made it so that all apps declare which other apps they can check, and App Review decides if they have a legitimate use: https://developer.apple.com/documentation/uikit/uiapplicatio...
This should be done the same as with location and microphone access... ie. "ask the user". "Flashlight 2000 DX app wants to access list of apps installed - allow once, allow always, deny now, deny always". Facebook wants to track 50 different things? Well.. ask the user 50 different times and try to explain why you want access to their call history and calendar data (adding calendar entries could also be a write-only option, with optional unique ids to change/remove entries).... and give your UX team a headache. Also, "deny" should be the "bolded" default. Maybe even give the user a list of unchecked permission the app wants, with explanations why it needs them, and have the user check the ones they want to give to the app (default state is unchecked (deny)).
Also granularity is key... giving location access for bluetooth connections, giving "manage calls" access to stop playing music when you get a call, etc. is just stupid.
Apple needs to force them to be up front from the very beginning that their stupid game or screensaver or else is also a tracking app. And boot any app that uses your phone to do anything beyond what they told you they would do in the app store description.
My how things have changed
Vista popped up inscrutable boxes for all kinds of actions, with no explanation.
This is a small number of permissions, each explained clearly.
If Microsoft had done it this way, nobody would have laughed.
Yes.
Nowadays, people are more aware about such things, so maybe you can start to assume the users are more comfortable about computing and the internet. So they should change their direction.
I'd agree with the sentiment if it was like Samsung making fun of removing a headphone jack, only to do the same thing less than a year later.
Basically, i'd be happy if those "risky" permissions would be hidden in app management in settings, disabled by default, and enabled only by power users.
The problem now is, that due to fscked up permissions schemes, some apps are unable to work at all, even the stuff they work now, some due to play store issues (eg. termux because they want to run downloaded code), and some due to missing apis (eg vnc servers).
That a big No. List of apps uniquely identifies the device and the user. Is this api available??
I just want the app to ask me, and me to decide if the app really needs it or not.
What are you referring to? As far as I know, one app can't query the list and usage time of other installed apps on iOS. This stackoverflow question[1] seems to confirm this. But please enlighten me if I'm misunderstanding what you're referring to.
[1] https://stackoverflow.com/questions/51634436/how-to-get-a-li...
What are you talking about?
They didn’t develop any such APIs, and have been progressively closing up anything that can be exploited that was left over from Mac OS.
Also, they aren’t blaming anyone for using anything they have built.
They are just asking users to consent to apps using it.
Why is that a problem?
People want apps to be able to do things and those things can often allow tracking in addition to being useful to the user. There is pretty much one API Apple devised specifically for tracking users and this very issue is Apple attempting to shut down.
Clarification: Just to be clear, Apple isn’t shutting down the API entirely, they are changing it from opt-out to opt-in.
Since I can't edit my original comment, I chose to reply to it instead of replying to everyone who corrected me. Yes, there's no API to directly query installed apps and usage on iOS. I think I got the wrong impression from years ago, when the function canOpenURL() could be abused to detect which apps were installed[0]. Thank you all for the corrections.
0. https://useyourloaf.com/blog/querying-url-schemes-with-canop...
It helps collect data that can be used to help detect malicious users of services.
They don't give you the ability to block them.
and of course, you can't find out what is going in and out of your phone over the network, and you definitely can't firewall it. ("content blockers" are nerfed)
The problem is all of these things you mention are also useful for things users want. Often they are useful for things users want inside their applications. Nobody wants a neutered OS.
It is not apple's way to advertise this capability is available, and give you granular control.
That's a very healthy attitude towards Apple's claims. They developed all these APIs that allow app makers to spy on their users, and then blame the app makers for spying.
For example, why does any app need to know which other apps I have installed, and how long I use them? This permission should very sparingly pass the review process, and only for apps in specific categories.