upvote
The app doesn't know. It just produces a widget tree, and the OS-provided renderer renders it this way or that way. In particular, it chooses not to render controls marked as "security-sensitive" when the rendering is intended for a screenshot; it could instead put empty boxes in their place, etc. The app has no idea and no control, AFAIK.
reply
Even having never developed on iOS before, I was able to find this in the first google search result for "ios api to detect screenshot": https://developer.apple.com/documentation/uikit/uiapplicatio...
reply
Open the amazon app. Take a screenshot. See a toast message informing you that the amazon app has detected you've taken a screenshot. Fucking used for fucking profiling.
reply
Don't apps like Snapchat notify the other person if you take a screenshot of your messages?
reply
Yes, iOS has userDidTakeScreenshotNotification for that.

https://developer.apple.com/documentation/uikit/uiapplicatio...

reply
Would be nice if the user could disable that.
reply
Yes, Snapchat does this. Apps absolutely have the ability to know when a screenshot is taken.
reply
Snapchat advertises that they detect screenshots. They try. But they're well aware that they can't actually know.

For example, their bug bounty program policy helpfully informs you that "screenshot detection avoidance" is not considered a vulnerability: https://hackerone.com/snapchat . That's because it's always possible.

reply
The apps definitely know. Horsemen example: If you screenshot on Amazon (and Business version) iOS apps, it “helpfully” pops its own share sheet.
reply