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.
Etsy shows a low banner asking to share with friends.
App in the Air makes it extremely easy to share and copy with a branded deep link.
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() { super.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", "http://example.com/home").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) {} })