{"id":30481,"date":"2020-10-16T14:23:37","date_gmt":"2020-10-16T18:23:37","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=30481"},"modified":"2020-11-07T20:26:56","modified_gmt":"2020-11-08T01:26:56","slug":"local-network-privacy-faq","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2020\/10\/16\/local-network-privacy-faq\/","title":{"rendered":"Local Network Privacy FAQ"},"content":{"rendered":"<p><a href=\"https:\/\/developer.apple.com\/forums\/thread\/663858\">Quinn<\/a>:<\/p>\n<blockquote cite=\"https:\/\/developer.apple.com\/forums\/thread\/663858\"><p>I regularly get asked questions about local network privacy.  This is my attempt to collect together the answers for the benefit of all.  Before you delve into the details, familiarise yourself with the basics by watching WWDC 2020 Session 10110 <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2020\/10110\/\">Support local network privacy in your app<\/a>.<\/p><\/blockquote>\n\n<p>Via <a href=\"https:\/\/twitter.com\/steipete\/status\/1316425875513053186\">Peter Steinberger<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/steipete\/status\/1316425875513053186\">\n<p>Including gems such as: &ldquo;Receiving an incoming UDP multicast or broadcast does not currently require local network access but, because we hope to change that in a future update, our advice right now is that you write your code as if did&rdquo;<\/p>\n<\/blockquote>\n\n<p id=\"local-network-privacy-faq-update-2020-11-07\">Update (2020-11-07): <a href=\"https:\/\/twitter.com\/roryprior\/status\/1320734420987482113\">Rory Prior<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/roryprior\/status\/1320734420987482113\">\n<p>The local network security privacy stuff in iOS 14 is a complete cluster fuck. The only reliable documentation is in Apple&rsquo;s help forums, basic features like checking if the user has actually accepted aren&rsquo;t shipped yet.<\/p>\n<p>Not all network activity actually triggers the alert even if its needed for said network activity to work properly. There&rsquo;s no simple mechanism to actually trigger the alert, Apple&rsquo;s sample code just spams every local network interface.<\/p>\n<p>These problems only became apparent in the shipping release of iOS 14 for us causing a last minute panic to fix things. Rushing major OS updates out the door with half implemented breaking changes is incredibly hostile to developers.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Quinn: I regularly get asked questions about local network privacy. This is my attempt to collect together the answers for the benefit of all. Before you delve into the details, familiarise yourself with the basics by watching WWDC 2020 Session 10110 Support local network privacy in your app. Via Peter Steinberger: Including gems such as: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2020-10-16T18:23:40Z","apple_news_api_id":"c926ba39-60c6-41ee-944c-e8442c064ea7","apple_news_api_modified_at":"2020-11-08T01:27:00Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/AySa6OWDGQe6UTOhELAZOpw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[1468,31,1837,476,355,71,1317],"class_list":["post-30481","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-bonjour","tag-ios","tag-ios-14","tag-networking","tag-privacy","tag-programming","tag-udp"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/30481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=30481"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/30481\/revisions"}],"predecessor-version":[{"id":30607,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/30481\/revisions\/30607"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=30481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=30481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=30481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}