[{"data":1,"prerenderedAt":275},["ShallowReactive",2],{"project-4973909":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":75,"maker_in_thread":156,"shape":159,"grid":162,"attempts":238,"same_week":239,"maker_shows":190,"maker_hidden":267,"reader_version":268,"card":269},"4973909","ShotBlocker","iOS screenshot detector a la Snapchat\u002FPoke","title","Show HN: ShotBlocker - iOS screenshot detector a la Snapchat\u002FPoke","https:\u002F\u002Fgithub.com\u002Fclayallsopp\u002FShotBlocker","github.com","10char",1356627026,2012,35,30,649,1677,39,"shown","security_privacy","screenshot detection","library",[24,25,26,27],"ios screenshot detection","screenshot notification","snapchat","ephemeral messaging","roasted",-0.512,{"positive":31,"neutral":32,"mixed":33,"critical":34},2,9,0,15,26,{"idea":37,"performance":40,"execution":41,"privacy":42},{"positive":38,"critical":39},1,11,{"positive":33,"critical":31},{"positive":33,"critical":33},{"positive":38,"critical":31},[38,33,33,44,38,44,33,44,38,38,38,33,38,44,44,38,38,45,38,38,45,38,38,44,44,44,44,38,38,38],3,5,null,{"problem":48,"audience":55,"pricing":46,"motivation":46,"time_to_build":46,"stack":64,"openness":73,"stage":74,"team_size":74},{"value":49,"source":50,"evidence":51},"Lets apps detect when a user takes a screenshot of content, to alert the sender.","maker",[52],{"id":53,"by":11,"text":54},"4974354","Yup, it's impossible to prevent or delete screenshots before they're taken (and you could also do something like take a photo of the device with another camera, if you really…",{"value":56,"source":57,"evidence":58},"iOS app developers building ephemeral messaging features.","inferred",[59,63],{"id":60,"by":61,"text":62},"4974516","thomasvendetta","With apps like Facebook Poke or SnapChat the content you're sending is ephemeral (it won't be around forever). Developers of these types of apps can't necessarily prevent a…",{"id":53,"by":11,"text":54},[65],{"value":66,"source":67,"evidence":68},"Objective-C","commenter",[69],{"id":70,"by":71,"text":72},"4975030","skymt","\"Screenshot-looking\" appears to mean \"the same size as the screen.\" Stenography would be significantly more complex.…","open_source","unknown",{"praise":76,"objections":82,"requests":127,"questions":135,"alternatives":143},[77],{"value":78,"source":67,"evidence":79},"Useful for apps that want to notify senders of screenshots as a UX feature.",[80,81],{"id":53,"by":11,"text":54},{"id":60,"by":61,"text":62},[83,98,105,116],{"value":84,"source":67,"evidence":85},"Cannot prevent screenshots; a second camera can still capture the screen.",[86,90,94],{"id":87,"by":88,"text":89},"4975680","uptown","While this may be nice - it's only a partial solution. Anybody can take a photo of screen from device #1 with camera from device #2. Nothing can prevent that.",{"id":91,"by":92,"text":93},"4976055","plasma","Nothing would stop a second phone with its camera recording the footage of the first camera.",{"id":95,"by":96,"text":97},"4974277","jstanley","I'm not an iOS user, but what is to stop the user from taking a screenshot and storing it somewhere else? Or posting it to a remote server? Since the image on the screen is in…",{"value":99,"source":67,"evidence":100},"Name is misleading since it doesn't block anything.",[101],{"id":102,"by":103,"text":104},"4974766","mikeash","Seems misleading to call this \"ShotBlocker\" when it doesn't actually block anything.",{"value":106,"source":67,"evidence":107},"Detection relies on polling the photo library, which is a hack.",[108,112],{"id":109,"by":110,"text":111},"4975435","wattson12","iOS gives no access to these buttons. It looks as though this code just polls the photo library and checks if a new photo was created. There was a different version going around…",{"id":113,"by":114,"text":115},"4974382","prezjordan","I do not believe the iOS SDK has access to these buttons. As other users have pointed out, screenshot detection is a hacky method of checking if touch interaction is temporarily…",{"value":117,"source":67,"evidence":118},"Raises concerns about user control over their own device and privacy.",[119,123],{"id":120,"by":121,"text":122},"4975273","npsimons","I don't deny there are issues, but they are societal\u002Feducational ones. People need to learn that when you send someone something, that's it, it's out of the bag, even if you…",{"id":124,"by":125,"text":126},"4974945","jrockway","Is Apple approving spyware applications now? Is it the app's business what core OS functionality you're using behind its back?",[128],{"value":129,"source":67,"evidence":130},"Detect AirPlay mirroring as a screenshot-like leak.",[131],{"id":132,"by":133,"text":134},"4974886","ConstantineXVI","If you're trying to block screenshots, AirPlay mirroring is something else you'll likely want to watch for. It's possible to send a separate feed to the AirPlay display; but not…",[136],{"value":137,"source":67,"evidence":138},"Why would anyone need to block screenshots of an app?",[139],{"id":140,"by":141,"text":142},"4974463","klapinat0r","Can someone elaborate on why this is an issue? Why would you need to block screenshots of your app?",[144,149],{"value":145,"source":67,"evidence":146},"Snapchat and Poke screenshot notifications.",[147,148],{"id":60,"by":61,"text":62},{"id":53,"by":11,"text":54},{"value":150,"source":67,"evidence":151},"Steganographic watermarking of images.",[152],{"id":153,"by":154,"text":155},"4974746","oulipo","Would it not be so much easier to simply show images with some steganographic message (\"I was displayed in SnapChat\") in it, and just check for this rather than checking for…",{"comments":38,"answered":38,"key":157},[158],{"id":53,"text":54},{"commenters":160,"max_depth":45,"maker_replies":38,"first_comment_mins":161,"lifespan_hours":39},28,64,[163,167,171,174,178,180,183,186,189,192,195,196,198,201,203,204,208,210,212,215,217,221,222,225,228,231,232,233,235,236],[164,33,38,165,166,33],"4975194","project\u002Fcritical\u002Fidea","newishuser",[168,38,33,169,170,33],"4974885","other\u002Fneutral\u002Fnone","gallamine",[172,38,33,169,173,33],"4975530","cdcarter",[175,38,44,176,177,33],"4976328","project\u002Fneutral\u002Fidea","geofft",[132,31,38,179,133,33],"project\u002Fcritical\u002Fperformance",[181,44,44,176,182,33],"4975346","JoeCortopassi",[184,44,33,169,185,33],"4975563","alexkus",[187,44,44,188,182,33],"4976017","project\u002Fneutral\u002Fexecution",[124,190,38,191,125,33],4,"project\u002Fcritical\u002Fprivacy",[193,190,38,191,194,33],"4975126","jonknee",[95,45,38,165,96,33],[53,45,33,197,11,38],"maker\u002Fneutral\u002Fidea",[199,45,38,179,200,33],"4975003","eddieroger",[153,202,44,176,154,33],6,[70,202,44,188,71,33],[205,206,38,165,207,33],"4974996",7,"bbq",[140,209,38,165,141,33],8,[60,209,45,211,61,33],"project\u002Fpositive\u002Fidea",[213,209,38,165,214,33],"4974576","ChuckMcM",[216,209,38,165,121,33],"4974832",[218,209,45,219,220,33],"4975014","project\u002Fpositive\u002Fprivacy","golden_apples",[120,209,38,165,121,33],[223,209,38,165,224,33],"4974834","ynniv",[226,32,44,188,227,33],"4974243","jc4p",[229,32,44,188,230,33],"4974308","pavel_lishin",[113,32,44,188,114,33],[109,32,44,188,110,33],[102,234,38,165,103,33],10,[87,39,38,165,88,33],[91,237,38,165,92,33],12,[],[240,245,250,255,259,263],{"id":241,"name":242,"points":243,"category":244},"4977845","thegoodman",271,"creative",{"id":246,"name":247,"points":248,"category":249},"4974055","howacarworks.com",242,"dev_tools",{"id":251,"name":252,"points":253,"category":254},"4980220","Ninja Blocks",149,"hardware",{"id":256,"name":257,"points":258,"category":254},"4977548","Hacking a Raspberry Pi into a wireless airplay speaker",144,{"id":260,"name":261,"points":262,"category":249},"4997493","a small weekendish project",106,{"id":264,"name":265,"points":266,"category":244},"4979247","Harmogram",105,false,"v2",{"id":270,"name":5,"line":6,"ai":267,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":271,"top":18,"kw":272,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":273,"url":9,"mix":274,"praise":78,"objection":84,"sub":21},4973909,-0.51,[24,25,26,27],"100313031110133115115113333111",[31,32,33,34],1793990889172]