How to Detect When a Screenshot is Taken and Prompt a Share to Increase App Engagement

As budgets go down, ROI becomes more and more important, and ads are becoming more expensive and less targeted; one channel can be optimized to bring highly engaged, high-intent, no-cost users to your product: user-to-user sharing. When thinking about this channel many marketers and product managers think big — incentives, elaborate referral programs, viral content, and beyond. However, an area that is often overlooked is capturing the actual sharing intent and making it incredibly easy for users to share when they want to share.

A super successful tactic — once you’ve captured the actual sharing intent — is to surface a pop up encouraging users to share the content directly, instead of simply texting a screenshot.

Here are some examples of screenshot sharing done well.

Audible takes over the whole screen with a sharing pop-up.

A mobile device with a screenshot showing Audible's full-screen sharing prompt with a yellow Share button at the bottom.

Etsy shows a low banner asking to share with friends.

Two mobile devices next to each other. The first one showing a small share banner at the bottom of the screen asking people to "Share the item with your friends" and the second one showing the contacts and various ways to share like messages, mail, Instagram, etc.

App in the Air makes it extremely easy to share and copy with a branded deep link.

Three mobile devices. The first one showing the App in the Air app, the second showing that the app can detect a screenshot and automatically creates a deep link for a better sharing experience, and the third showing the deep-linked text message to a friend.

The code snippets below are simple ways to detect a screenshot and show the user a Branch deep link to that content as a pop-up.

On Apple
override func viewDidLoad() {

NotificationCenter.default.addObserver(self, selector: #selector(screenshotTaken), name: UIApplication.userDidTakeScreenshotNotification, object: nil)


@objc func screenshotTaken() {
print(“Screenshot taken! Showing Branch link.”)

//Use the respective BranchUniversalObject and BranchLinkProperties to create a short URL
buo.getShortUrl(with: lp) { url, error in

let alert = UIAlertController(title: “You took a screenshot!”, message: “Tap below to share a link to this page \(url)”, preferredStyle: .actionSheet)

alert.addAction(UIAlertAction(title: “Share”, style: .default , handler:{ (UIAlertAction)in
//Share the link here

alert.addAction(UIAlertAction(title: “Dismiss”, style: .cancel, handler: nil))

//Show the alert

self.present(alert, animated: true, completion: nil)




var lp = LinkProperties().setChannel(“facebook”).setFeature(“sharing”).setCampaign(“content 123 launch”).setStage(“new user”).addControlParameter("$desktop_url", "").addControlParameter("custom", "data").addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()))

val ss = ShareSheetStyle(this@MainActivity, "Check this out!", "This stuff is awesome: ").setCopyUrlStyle(resources.getDrawable(this, android.R.drawable.ic_menu_send), "Copy", "Added to clipboard").setMoreOptionStyle(resources.getDrawable(this, android.R.drawable.ic_menu_search), "Show more").addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK).addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL).addPreferredSharingOption(SharingHelper.SHARE_WITH.MESSAGE).addPreferredSharingOption(SharingHelper.SHARE_WITH.HANGOUT).setAsFullWidthStyle(true).setSharingTitle("Share With")

buo.showShareSheet(this, lp, ss, object : Branch.BranchLinkShareListener {

    override fun onShareLinkDialogLaunched() {}

    override fun onShareLinkDialogDismissed() {}

    override fun onLinkShareResponse(sharedLink: String?, sharedChannel: String?, error: BranchError?) {}

    override fun onChannelSelected(channelName: String) {}



For more information on the Branch mobile linking platform (MLP), check our website and documentation, or request a demo.