{"id":37538,"date":"2025-01-20T05:07:07","date_gmt":"2025-01-20T05:07:07","guid":{"rendered":"https:\/\/peraltafinancing.com\/apple-2\/issue-695-ios-dev-weekly\/"},"modified":"2025-01-20T05:07:07","modified_gmt":"2025-01-20T05:07:07","slug":"issue-695-ios-dev-weekly","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=37538","title":{"rendered":"Issue 695 \u2013 iOS Dev Weekly"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>I read <a href=\"https:\/\/www.elkraneo.com\/the-framework-next-door\/\">this post from Cristian D\u00edaz<\/a> this week. It\u2019s about The Green Spurt, a project that <a href=\"https:\/\/bsky.app\/profile\/elkraneo.bsky.social\">he<\/a> and <a href=\"https:\/\/bsky.app\/profile\/coderox.bsky.social\">Roxana Nagy<\/a> are working on, and it reminded me of my piece about <a href=\"https:\/\/iosdevweekly.com\/issues\/637\/#start\">shared experiences in visionOS apps<\/a> that I wrote in 2023.<\/p>\n<p>In <a href=\"https:\/\/iosdevweekly.com\/issues\/637\/#start\">my article<\/a>, I talked about visionOS apps being limited until shared experiences are possible. At the moment, it\u2019s rare to see two Vision Pro devices in the same room, but as the platform grows, the experience will be subpar until shared experiences are ordinary rather than remarkable.<\/p>\n<p>When I wrote my article, I didn\u2019t know that <a href=\"https:\/\/developer.apple.com\/documentation\/tabletopkit\">TabletopKit<\/a> was in development. Apple introduced it at WWDC 2024, and it shipped with visionOS 2.0.<\/p>\n<p>TabletopKit helps you create spatial multiplayer games around a table surface. It uses RealityKit, SharePlay, and integrates with SwiftUI to let you build shared experiences. There\u2019s a good <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2024\/10091\/\">WWDC video where Julia Schell goes through the basics,<\/a> which you should also watch. It doesn\u2019t solve all the issues I wondered about in my article, like whether UI in a shared experience should be personal or shared, but it\u2019s a start.<\/p>\n<p>Cristian and Roxana aren\u2019t building a tabletop game, but have found that they can still use the framework to help them make their escape room experience. You should <a href=\"https:\/\/www.elkraneo.com\/the-framework-next-door\/\">read their post<\/a> if you haven\u2019t already for some more details.<\/p>\n<p>As for Apple, I\u2019m glad to see them begin to tackle shared experiences with visionOS. It may be a few years until these experiences are commonplace, but this platform was always going to have a slow start. Frameworks like this will make incredible things possible in the future.<\/p>\n<p>Are you, or someone you know, working on a shared experience app for visionOS? It doesn\u2019t matter if it uses TabletopKit or something home grown. Please reply if you know of any interesting projects I should look into. I\u2019d also love to look at a beta of The Green Spurt if Cristian or Roxana are reading.<\/p>\n<p class=\"attribution\">Dave Verwer<\/p>\n<hr\/>\n<p>I\u2019ll keep this short, but thanks for all the feedback on the new design. I\u2019ve increased the font size and also fixed the issue that stopped some of you from seeing the correct font. There are more changes coming as a result of your feedback, but I didn\u2019t get to them all yet. Hang in there!<\/p>\n<p><a href=\"https:\/\/geniusscansdk.com\/?utm_source=ios_dev_weekly&amp;utm_campaign=ios_dev_weekly_2025_01_17&amp;utm_medium=sponsoring\" class=\"link\" id=\"spjEkXk\">Add Document Scanning and OCR with One Line of Code<\/a><\/p>\n<p>Let users scan documents effortlessly and generate crisp PDFs with the Genius Scan SDK. Enjoy local processing for performance and privacy: real-time detection, perspective correction, image enhancement, OCR, and data extraction\u2014no more blurry documents! <a href=\"https:\/\/geniusscansdk.com\/?utm_source=ios_dev_weekly&amp;utm_campaign=ios_dev_weekly_2025_01_17&amp;utm_medium=sponsoring\">Get started now<\/a>.<\/p>\n<h2 class=\"category news\" id=\"news\">News<\/h2>\n<p><a href=\"https:\/\/developer.apple.com\/news\/?id=rzloycgp\" class=\"link\" id=\"rBbyoys\">Upcoming Changes to the Receipt Signing Intermediate Certificate<\/a><\/p>\n<p>The first phase of a multi-phase process to upgrade the App Store intermediate certificate starts <em>next week<\/em>:<\/p>\n<blockquote>\n<p>Starting January 24, 2025, if your app performs on-device receipt validation and doesn\u2019t support the SHA-256 algorithm, your app will fail to validate the receipt. If your app prevents customers from accessing the app or premium content when receipt validation fails, your customers may lose access to their content.<\/p>\n<\/blockquote>\n<p>If your app performs on-device receipt validation you need to pay attention to this.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/blog.ronaldoussoren.net\/2025\/01\/14\/ann-pyobjc-now-with-less.html\" class=\"link\" id=\"qMTlFKp\">Announcing: PyObjC 11<\/a><\/p>\n<p>I must admit I hadn\u2019t heard of PyObjC for a while until I saw this announcement from <a href=\"https:\/\/micro.blog\/ronaldoussoren\">Ronald Oussoren<\/a>. It\u2019s likely not something you want to pick up today if you\u2019re not already using it, but I\u2019m genuinely happy to see it still being maintained and that it supports the latest macOS SDK.<\/p>\n<h2 class=\"category code\" id=\"code\">Code<\/h2>\n<p><a href=\"https:\/\/whackylabs.com\/swift\/kotlin\/compose\/2025\/01\/12\/compose-multiplatform-is-real\/\" class=\"link\" id=\"ABHomsc\">Compose multiplatform is real!<\/a><\/p>\n<p>I was hooked from the first sentence of <a href=\"https:\/\/bsky.app\/profile\/chunkyguy.bsky.social\">Sidharth Juyal<\/a>\u2019s latest post:<\/p>\n<blockquote>\n<p>So yes after getting my hands dirty with Kotlin multiplatform the obvious next step would be to try Compose multiplatform. Which I did. And yes it\u2019s a game changer.<\/p>\n<\/blockquote>\n<p>The code from his experiment <a href=\"https:\/\/github.com\/chunkyguy\/PhotoApp\/tree\/master\/compose-multiplatform\">is available<\/a> if you\u2019re also curious about using Kotlin and Jetpack Compose to write an iOS app.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/www.createwithswift.com\/exploring-tab-view-styles-in-swiftui\/\" class=\"link\" id=\"ZUvbOeN\">Exploring Tab View Styles in SwiftUI<\/a><\/p>\n<p>The new SwiftUI <code>TabView<\/code> is extremely versatile in adapting its UI to the platform you\u2019re developing for. It can be hard to know what you\u2019re going to get ahead of time, so I liked this post from Matteo Altobello that takes us through what it can do on iOS and iPadOS.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/tiagohenriques.vercel.app\/blog\/bringing-app-intents-to-your-swiftui-app\" class=\"link\" id=\"Wygbjqc\">Bringing App Intents to your SwiftUI App<\/a><\/p>\n<p>App Intents have risen in importance over the last few years, being necessary for Siri and Shortcuts integration. They\u2019re about to get more important, too, as they will be how Apple Intelligence decides what to do with your app based on user requests. If you\u2019ve not embraced them yet, you could do a lot worse than this introductory article from <a href=\"https:\/\/github.com\/henriquestiagoo\">Tiago Henriques<\/a>.<\/p>\n<h2 class=\"category videos\" id=\"videos\">Videos<\/h2>\n<p><a href=\"https:\/\/swifttoolkit.dev\/posts\/clis-rambo\" class=\"link\" id=\"rsghuDF\">Swift Argument Parser with Guilherme Rambo<\/a><\/p>\n<p>Join <a href=\"https:\/\/bsky.app\/profile\/natanrolnik.bsky.social\">Natan Rolnik<\/a> and <a href=\"https:\/\/bsky.app\/profile\/inside.bsky.social\">Gui Rambo<\/a> as they discuss <a href=\"https:\/\/swiftpackageindex.com\/apple\/swift-argument-parser\">Swift Argument Parser<\/a>. I <em>love<\/em> the argument parser, but <a href=\"https:\/\/swiftpackageindex.com\/kylef\/PathKit\">PathKit<\/a>, which they also showcase, was new to me.<\/p>\n<h2 class=\"category jobs\" id=\"jobs\">Jobs<\/h2>\n<p><a href=\"https:\/\/iosdevjobs.com\/jobs\/e-67143df5-fff3-476f-a1be-76a881dfc018\">Staff iOS Engineer @ Outsmart College, Inc.<\/a> \u2013 Team up with former Duolingo execs to tackle long-standing challenges in higher education! Outsmart is looking for a self-organized Staff iOS Engineer with a strong background in UIKit and SwiftUI development. TCA, ML\/AI experience nice to have. Startup experience highly desired. \u2013 <em>On-site (United States in CA or NY) with some remote work (within US timezones)<\/em><\/p>\n<h2 class=\"category finally\" id=\"finally\">And finally&#8230;<\/h2>\n<p>Adding <a href=\"https:\/\/github.com\/ading2210\/doompdf\">one more platform<\/a> to the list of places you can run DOOM. \ud83d\ude31<\/p>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>I read this post from Cristian D\u00edaz this week. It\u2019s about The Green Spurt, a project that he and Roxana Nagy are working on, and it reminded me of my piece about shared experiences in visionOS apps that I wrote in 2023. In my article, I talked about visionOS apps being limited until shared experiences [&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-37538","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 695 \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=37538\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Issue 695 \u2013 iOS Dev Weekly - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"I read this post from Cristian D\u00edaz this week. It\u2019s about The Green Spurt, a project that he and Roxana Nagy are working on, and it reminded me of my piece about shared experiences in visionOS apps that I wrote in 2023. In my article, I talked about visionOS apps being limited until shared experiences [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=37538\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-20T05:07:07+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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=37538#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=37538\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Issue 695 \u2013 iOS Dev Weekly\",\"datePublished\":\"2025-01-20T05:07:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=37538\"},\"wordCount\":911,\"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=37538#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=37538\",\"url\":\"https:\/\/fivemor.com\/?p=37538\",\"name\":\"Issue 695 \u2013 iOS Dev Weekly - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"datePublished\":\"2025-01-20T05:07:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=37538#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=37538\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=37538#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Issue 695 \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 695 \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=37538","og_locale":"en_US","og_type":"article","og_title":"Issue 695 \u2013 iOS Dev Weekly - Som2ny Network","og_description":"I read this post from Cristian D\u00edaz this week. It\u2019s about The Green Spurt, a project that he and Roxana Nagy are working on, and it reminded me of my piece about shared experiences in visionOS apps that I wrote in 2023. In my article, I talked about visionOS apps being limited until shared experiences [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=37538","og_site_name":"Som2ny Network","article_published_time":"2025-01-20T05:07:07+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=37538#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=37538"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Issue 695 \u2013 iOS Dev Weekly","datePublished":"2025-01-20T05:07:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=37538"},"wordCount":911,"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=37538#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=37538","url":"https:\/\/fivemor.com\/?p=37538","name":"Issue 695 \u2013 iOS Dev Weekly - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"datePublished":"2025-01-20T05:07:07+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=37538#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=37538"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=37538#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Issue 695 \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\/37538","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=37538"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/37538\/revisions"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=37538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=37538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=37538"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=37538"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=37538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}