{"id":142344,"date":"2025-03-18T20:58:58","date_gmt":"2025-03-18T20:58:58","guid":{"rendered":"https:\/\/peraltafinancing.com\/apple-2\/issue-683-ios-dev-weekly\/"},"modified":"2025-03-18T20:58:58","modified_gmt":"2025-03-18T20:58:58","slug":"issue-683-ios-dev-weekly","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=142344","title":{"rendered":"Issue 683 \u2013 iOS Dev Weekly"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Many people have written about the <a href=\"https:\/\/tidbits.com\/2024\/09\/23\/how-to-avoid-sequoias-repetitive-screen-recording-permissions-prompts\/\">repeated screen recording permission prompts<\/a> in macOS 15 and I mostly agree with the negative coverage.<\/p>\n<p>There is some potentially good news <a href=\"https:\/\/9to5mac.com\/2024\/10\/07\/macos-sequoia-screen-recording-popups\/\">coming in 15.1<\/a>, with the promise of even less frequent prompts if you regularly use an app. That seems like a reasonable compromise, and is probably where Apple\u2019s iteration on this feature will end. But I also liked <a href=\"https:\/\/www.threads.net\/@eternalstorms\">Matthias Gansrigler<\/a>\u2019s <a href=\"https:\/\/blog.eternalstorms.at\/2024\/08\/06\/thought-app-review-should-grant-core-function-default-entitlements-to-apps-on-the-app-stores\/\">recent idea<\/a> about allowing apps to request default permissions.<\/p>\n<p>The <a href=\"https:\/\/blog.eternalstorms.at\/2024\/08\/06\/thought-app-review-should-grant-core-function-default-entitlements-to-apps-on-the-app-stores\/\">whole post is worth a read<\/a>, but the gist of it is that if the entire purpose of an app is dependent on a privilege, developers should be able to request that privilege during App Review.<\/p>\n<p>I <em>always<\/em> want my screenshot tool to have screen recording privileges, my voice memos app to have microphone privileges, and my calendar helper app to have access to my calendars. I\u2019m sure you have examples you can think of, too, where even that initial prompt for the primary permission is unnecessary as it\u2019s the entire purpose of the app.<\/p>\n<p>I\u2019d still like to be able to go to settings and turn off those default permissions, but having them on by default would be great at reducing <a href=\"https:\/\/youtu.be\/FxOIebkmrqs\">permission prompt overload<\/a>.<\/p>\n<p>You might think that this idea is overkill, but two things happen as we\u2019re shown more and more security prompts. The decisions we make lose meaning and we get conditioned to accept everything. Second, for apps where the permission is truly important to the app\u2019s operation, if the user does deny the privilege then they are either left with a useless app or a messy trip through the settings app. Yes, apps can choose to deep link people into Settings, but even so, it can turn a pleasant on boarding experience into a chore.<\/p>\n<p>The downside, of course, is consistency. If the operating system stops asking for user permission for some apps, will people assume every app can do everything again? Default permissions could be listed on App Store listings. However, most people don\u2019t read that kind of information.<\/p>\n<p>I don\u2019t expect Apple to make major changes to the permission prompt system, especially with the tweak to screen recording permission frequency coming in macOS 15.1. That said, it\u2019s an interesting discussion point, and I hope they keep iterating on how it works, and that ideas like this are considered.<\/p>\n<p class=\"attribution\">Dave Verwer<\/p>\n<p><a href=\"https:\/\/app.getcontrast.io\/register\/bitrise-master-test-distribution-and-store-releases-navigating-test-distribution-with-app-center-s-shutdown?utm_source=referral&amp;utm_medium=sponsorship&amp;utm_campaign=iosdevweekly\" class=\"link\" id=\"4037I2D\">Master Test Distribution &amp; App Releases Amid App Center\u2019s Shutdown<\/a><\/p>\n<p>Join Bitrise for a webinar to navigate the sunsetting of Microsoft\u2019s Visual Studio App Center. Learn how to transition smoothly to alternative platforms, optimize test and store distributions, and prepare for the future of mobile app releases. Plus, get a sneak peek of Bitrise\u2019s new tool designed to simplify your distribution workflows. <a href=\"https:\/\/app.getcontrast.io\/register\/bitrise-master-test-distribution-and-store-releases-navigating-test-distribution-with-app-center-s-shutdown?utm_source=referral&amp;utm_medium=sponsorship&amp;utm_campaign=iosdevweekly\">Save your seat here<\/a>.<\/p>\n<h2 class=\"category news\" id=\"news\">News<\/h2>\n<p><a href=\"https:\/\/developer.apple.com\/news\/?id=yfacfeal\" class=\"link\" id=\"Wtl0IBV\">Trader status in the European\u00a0Union<\/a><\/p>\n<p>If you\u2019ve been dutifully ignoring Apple\u2019s reminder emails about setting your \u201ctrader status\u201d in App Store Connect, you can no longer submit app updates as of today. If you continue to delay doing it, your apps will be <em>removed from the App Store in EU countries<\/em> in February next year.<\/p>\n<p>Apple has some information on <a href=\"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-compliance-information\/manage-european-union-digital-services-act-trader-requirements\/\">what it all means<\/a> if you\u2019re struggling. It\u2019s still not simple, though, so be prepared to read that page <em>several<\/em> times.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/developer.apple.com\/news\/?id=09za8wzy\" class=\"link\" id=\"F0ZVkDv\">Push Notification service server certificate update<\/a><\/p>\n<p>This isn\u2019t urgent yet, but if you send push notifications from your app then you\u2019ll need to update this before next January. That\u2019s only three months away, if you needed a scare! \ud83d\udc7b<\/p>\n<h2 class=\"category code\" id=\"code\">Code<\/h2>\n<p><a href=\"https:\/\/christianselig.com\/2024\/10\/beware-userdefaults\/\" class=\"link\" id=\"uk50Bb\">Beware UserDefaults: a tale of hard to find bugs, and lost data<\/a><\/p>\n<p>If you\u2019ve ever noticed <code>UserDefaults<\/code> data appearing to reset to default values, you\u2019ll want to read this article from <a href=\"https:\/\/mastodon.social\/@christianselig\">Christian Selig<\/a>. You may then also want to check out <a href=\"https:\/\/christianselig.com\/2024\/10\/introducing-tiny-storage\/\">this article on a new package<\/a> he created to solve the issue, <a href=\"https:\/\/swiftpackageindex.com\/christianselig\/TinyStorage\">TinyStorage<\/a>.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/blog.jacobstechtavern.com\/p\/migrating-combine-to-asyncalgorithms\" class=\"link\" id=\"3eSFPp5\">Migrating Combine to AsyncAlgorithms<\/a><\/p>\n<p><a href=\"https:\/\/developer.apple.com\/documentation\/combine\">Combine<\/a> isn\u2019t (yet?) deprecated, but it\u2019s clearly not what Apple is investing in. <a href=\"https:\/\/github.com\/jacobsapps\">Jacob Bartlett<\/a> even mentions that it hasn\u2019t seen any updates since 2021, more than three years ago. It\u2019s important to note that you don\u2019t <em>need<\/em> to stop using it, but if you want to migrate to something based on Swift concurrency, you might want to read this article.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/fatbobman.com\/en\/posts\/reinventing-core-data-development-with-swiftdata-principles\/\" class=\"link\" id=\"yCUZpdD\">Reinventing Core Data with SwiftData Principles<\/a><\/p>\n<p>I wouldn\u2019t necessarily take this article from <a href=\"https:\/\/mastodon.social\/@fatbobman\">Fatbobman<\/a> as advice on what data persistence framework to use. It\u2019s also not an exaggerated and reactionary rant about SwiftData, but it is a story of why he\u2019s going back to Core Data. It\u2019s a very lengthy look at approaches to data persistence and is worth a read.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/medium.com\/parable-engineering\/how-to-easily-create-zip-files-in-swift-without-third-party-dependencies-a1c36a451ea1\" class=\"link\" id=\"F3ckMDe\">Create ZIP files in Swift without third-party dependencies<\/a><\/p>\n<p>Did you know that iOS has built-in support for zipping files? I didn\u2019t either, but <a href=\"https:\/\/github.com\/dreymonde\/\">Oleg Dreyman<\/a> lays out how to do it in this article. It\u2019s not only available on iOS, either. <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsfilecoordinatorreadingoptions\/nsfilecoordinatorreadingforuploading\">The documentation<\/a> specifies that it works across all Apple platforms. There are some things you should know about the API, so read the article, but this might save you a dependency.<\/p>\n<h2 class=\"category jobs\" id=\"jobs\">Jobs<\/h2>\n<p><a href=\"https:\/\/iosdevjobs.com\/jobs\/e-f0acf6ce-27d6-4ecf-b80d-2be199ee5642\">Senior iOS Developer @ komoot <\/a>\u2013 You\u2019ll team up with six world-class iOS engineers, take over full responsibility for our iOS app, and develop diverse features for navigation, routing, social interaction, and content visualization that will make your work challenging and fun. \u2013 <em>Remote (within European timezones)<\/em><\/p>\n<h2 class=\"category finally\" id=\"finally\">And finally&#8230;<\/h2>\n<p>I was left with a series of \u201c<a href=\"https:\/\/youtu.be\/Df_K7pIsfvg\">What if\u2019s<\/a>\u201d \u2764\ufe0f<\/p>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Many people have written about the repeated screen recording permission prompts in macOS 15 and I mostly agree with the negative coverage. There is some potentially good news coming in 15.1, with the promise of even less frequent prompts if you regularly use an app. That seems like a reasonable compromise, and is probably where [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11768],"tags":[15295,3554,15294,6039],"dealstore":[],"offerexpiration":[],"class_list":["post-142344","post","type-post","status-publish","format-standard","hentry","category-apple-2","tag-dev","tag-ios","tag-issue","tag-weekly"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Issue 683 \u2013 iOS Dev Weekly - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=142344\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Issue 683 \u2013 iOS Dev Weekly - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"Many people have written about the repeated screen recording permission prompts in macOS 15 and I mostly agree with the negative coverage. There is some potentially good news coming in 15.1, with the promise of even less frequent prompts if you regularly use an app. That seems like a reasonable compromise, and is probably where [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=142344\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-18T20:58:58+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=142344#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=142344\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Issue 683 \u2013 iOS Dev Weekly\",\"datePublished\":\"2025-03-18T20:58:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=142344\"},\"wordCount\":926,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"keywords\":[\"Dev\",\"iOS\",\"Issue\",\"Weekly\"],\"articleSection\":[\"Apple\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=142344#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=142344\",\"url\":\"https:\/\/fivemor.com\/?p=142344\",\"name\":\"Issue 683 \u2013 iOS Dev Weekly - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"datePublished\":\"2025-03-18T20:58:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=142344#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=142344\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=142344#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Issue 683 \u2013 iOS Dev Weekly\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Issue 683 \u2013 iOS Dev Weekly - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=142344","og_locale":"en_US","og_type":"article","og_title":"Issue 683 \u2013 iOS Dev Weekly - Som2ny Network","og_description":"Many people have written about the repeated screen recording permission prompts in macOS 15 and I mostly agree with the negative coverage. There is some potentially good news coming in 15.1, with the promise of even less frequent prompts if you regularly use an app. That seems like a reasonable compromise, and is probably where [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=142344","og_site_name":"Som2ny Network","article_published_time":"2025-03-18T20:58:58+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=142344#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=142344"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Issue 683 \u2013 iOS Dev Weekly","datePublished":"2025-03-18T20:58:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=142344"},"wordCount":926,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"keywords":["Dev","iOS","Issue","Weekly"],"articleSection":["Apple"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=142344#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=142344","url":"https:\/\/fivemor.com\/?p=142344","name":"Issue 683 \u2013 iOS Dev Weekly - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"datePublished":"2025-03-18T20:58:58+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=142344#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=142344"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=142344#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Issue 683 \u2013 iOS Dev Weekly"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/142344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=142344"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/142344\/revisions"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=142344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=142344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=142344"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=142344"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=142344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}