It turns out that in addition to all known access levels, there's also an experimental feature called SPI (System Programming Interfaces). It lets for library developers shipping experimental features only to dedicated clients and hiding those features to other ones.
https://blog.eidinger.info/system-programming-interfaces-spi-in-swift-explained
#swift
FYI 👇
Q: Is there a documentation up for accessing dynamic island (on iPhone 14 Pro) with live activities? Couldn't find anything
A: Live Activities are implemented using the ActivityKit framework, which was available in iOS 16 beta 4 and iOS 16 beta 5. The ActivityKit framework is not included in iOS 16 RC, and is not included in Xcode 14 RC. ActivityKit will be included in an update to iOS 16 coming later this year, as mentioned in this News and Updates post. Once ActivityKit is available in an update to iOS 16, you'll be able to implement Live Activities and interact with them in Dynamic Island.
https://developer.apple.com/forums/thread/713978
Turns out that there is a UML generator for Swift. I wish I had known about it last year.
In addition, a small example - how to generate class diagrams from a framework.
#uml
Long read about the presentation changes in iOS and iPadOS 16
• When the presenting view controller is in a regular-width environment on iPad, form sheets are slightly bigger than on previous iPadOS versions. This changed in beta 4. (If the presenting view has compact width, a form sheet presentation will adapt and fill the width, just like on iPhone.)
• The height of the navigation bar in a non-full-screen, non-popover, modally-presented view controller is smaller than before (12 points smaller on iPhone and 6 points smaller on iPad), but this has not (yet?) changed in SwiftUI. This change has only just occurred in beta 5.
• Non-full-screen modally-presented double and triple column style split view controllers have a different appearance compared to iPadOS 13 to 15.
https://hacknicity.medium.com/view-controller-presentation-changes-in-ios-and-ipados-16-474c82c9ed2e
#UI #iOS
We all know that Meta collects everything about us, no surprises. Every step is being watched. More accurate advertising - more money. For this reason, Felix prepared an investigation on how their in-app browser tracks us. In case you use in-app browser rather than the built-in Safari, just read this article.
https://krausefx.com/blog/ios-privacy-instagram-and-facebook-can-track-anything-you-do-on-any-website-in-their-in-app-browser
#privacy
It turns out that in SwiftUI you can finally hide the home indicator without UIKit hacks.
https://danielsaidi.com/blog/2022/08/01/removing-the-home-indicator-in-swiftui
#SwiftUI
Apple has prepared an online meeting with App Store experts to cover the following topics:
- Get started with TestFlight
- Get started with app discovery and marketing
- Explore Family Sharing for in-app purchases
- Optimize subscriptions for success: acquisition
- Get started with in-app events
- Get started with custom product pages
- Get started with product page optimization
https://developer.apple.com/events/app-store/
#Apple
iOS 16 comes with great improvements in app launch time. For apps like Lyft or Airbnb launching almost twice as fast.
And more in-depth posts as well:
- Speeding up protocol conformance checks
- Reducing the amount of data loaded from disk
#iOS #optimization
What’s new in iOS 16 about Format Styles:
https://ampersandsoftworks.com/posts/iOS-16-formatstyle/
Gorgeous documentation about all styles in one place 🔥:
https://goshdarnformatstyle.com/
#iOS #formatters
Oh, great! If you've ever needed to compare Any
values in Swift, now it's easier and more elegant to achieve it.
https://nilcoalescing.com/blog/CheckIfTwoValuesOfTypeAnyAreEqual/
#swift
Some of the interesting highlights from the new Xcode:
- Finally! Simplify an app icon with a single 1024x1024 image that is automatically resized for its target. Choose the Single Size option in the app icon’s Attributes inspector in the asset catalog. You can still override individual sizes with the All Sizes option. 🎉
- Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14. 🤷♂️
- Instruments now includes a new Swift Concurrency template for tracing the usage and behavior of Swift’s concurrency primitives.
- Instruments has a new Hang Tracing instrument that shows when an app’s main thread is unable to handle incoming events for an extended period of time, potentially causing the UI to hang.
- Hang reports in the Xcode Organizer provide diagnostic reports on application hangs to assist in improving responsiveness. Reports are generated for an individual app release and ordered by severity. They include sample logs for hangs occurring on the main thread that you can use for debugging as well as statistics on affected devices and iOS versions for the report.
- Xcode Previews can now run on physical devices without requiring a containing application, making it easy to preview on-device for frameworks and Swift packages.
- Added a refactor action to add an explicit Codable implementation.
- Simulator now supports remote notifications in iOS 16 when running in macOS 13 on Mac computers with Apple silicon or T2 processors. Simulator supports the Apple Push Notification Service Sandbox environment. Your server can send a remote notification to your app running in that simulator by connecting to the APNS Sandbox. 💃
- Xcode now pins elements of your code structure to the top of the editor as you scroll through a document.
- Swift 5.7 with a lot of new features!
https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-14-release-notes
I think a lot of developers are stressed when dealing with the iOS signing process, and that's fine. Therefore, Bruno has prepared a short article to refresh the knowledge for these people.
By the way, you can read more advanced articles written by Apple a few weeks ago:
Inside Code Signing: Requirements
Inside Code Signing: Hashes
Inside Code Signing: Provisioning Profiles
#code_signing #provisioning
Over the years iOS comes with new API developers want to adopt and it'd be very tempting to support only the latest OS, but the reality is different. So I'm sure you can find many availability labels for back-deploy features in your codebase… But what if we don't need these shims anymore - we need to remember to get rid of them all on every OS upgrade? Wouldn't it be cool to delegate it to the compiler, would it? So Dave's prepared an interesting solution, let's read it!
https://davedelong.com/blog/2022/05/15/conditional-compilation-part-4-deployment-targets/
#Xcode
One of the all-awaited feature in Swift 5.6 was Extensible Build Tools proposal - it allows performing custom actions during a build via custom plugins in SPM. Besides it there's another important proposal, that introduces artifact bundles directory in addition to binary targets as well. If you support Linux or are just curious what it is, an author prepared a small article that clarifies this.
https://www.polpiella.dev/binary-targets-in-modern-swift-packages
#SPM
I think everyone has had a bad experience with playing audio across different apps on your phone. For example, you listen to a track from Apple Music, then you switch to your Mom's recording from another app, and at the end of the recoding, your favorite track doesn't start playing again... To understand why this happens and how to avoid it, Igor has prepared a small helpful article.
https://blog.kulman.sk/correctly-playing-audio-in-ios-apps/
#iOS #AVFoundation
Here we go. API docs about Dynamic Island support are now available.
https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities
#iOS #widgets
A bit of new API: layout guide that is useful for full-screen content:
safeAreaAspectFitLayoutGuide
“Unlike the standard rectangular safe area defined by the safeAreaLayoutGuide/safeAreaInsets, this new layout guide API considers the true shape of the safe area, including the curvature of the display edges and sensor housing/island areas, maximizing the content without clipping.”
Read the Tyler’s thread about the all details.
https://twitter.com/smileyborg/status/1567624484206825472?s=46&t=csd2d8i61Hh2K4Z9JvlR1w
#iOS
Thomas discusses about AttributedString in SwiftUI: what is good, what is bad, what would be great to improve. He also prepared a helper that simplifies the life when working with texts.
p.s. now it's a little confusing when dealing with attributed strings. I really hope that Apple will take this problem into account and improve it soon. But this "soon" isn't really soon for us, unless you only support the latest version. 🥲
https://dimillian.medium.com/swiftui-attributedstring-is-not-there-yet-63d49e9f9c16
#SwiftUI
Oh, such an amazing repo with tons of animations using SwiftUI from different apps for inspiration and practice.😍
https://github.com/GetStream/purposeful-ios-animations
#SwiftUI #animations
Didn't pay attention to the improved Xcode code completion, but it seems to be awesome.
https://twitter.com/peterfriese/status/1554905178314158082
#Xcode
Such a detailed post about new Grid layout in SwiftUI. Highly recommended.
https://swiftui-lab.com/eager-grids/
#SwiftUI #Layout
Discovered something great today I want to share with you! How many times defining a custom decodable initializer, for instance, have you lost the ability to use the automatically generated memberwise initialize, umm? Oh, I've faced it so often, especially in tests. So the solution is easy - just define this initializer in an extension, and that's it.
https://danijelavrzan.com/posts/2022/07/how-to-test-custom-codable/
#swift
Let's figure out what's new in the Xcode Previews.
At least I hope they have become more reliable and don't crash every 5 minutes. 🤞
https://useyourloaf.com/blog/whats-new-in-xcode-14-previews/
#Xcode
If you’re already rewriting all your regex-strings in a new modern way using Regex Builder - this online generator will simplify your life a lot by far!
https://paiv.github.io/swift-rxbgen/
#swift #regex
As I said, there are a lot of new features in Swift 5.7
https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7
#swift
Look at the image - familiar situation? Just a typo. The code compiles and then crashes at runtime. An author found a halfway solution for detecting these problems, but only for custom view modifiers - using a special Swift attribute. So at least we can make our code safer.
#SwiftUI
In case you didn't know yet, it turns out that the books of "Flight School" series are now available for free! Matt from NSHipters prepared an amazing gift for us.
https://flight.school
#books #swift
Uh, looks like I haven't posted much about SwiftUI, so let's fix it! An author prepared a comprehensive step-by-step tutorial about building an animated circled checkmark from scratch. If you're not confident about this topic or maybe it's new for you at all, it will be interesting reading by far.
Press ❤️, if you like such the detailed post the author prepared for us.
https://serialcoder.dev/text-tutorials/swiftui/playing-with-swiftui-implementing-a-customizable-and-animatable-circled-checkmark-view/
#SwiftUI #animations
Subscriber shared the article about making an advanced Bottom Sheet:
- Learn how to adapt the bottom sheet to the content size.
- Add interactive dismissal, taking scrollable content into account.
- Support UINavigationController with navigation inside the bottom sheet.
p.s. the author is ready to answer to any questions - feel free to contact @MikhailMaslo
https://medium.com/joomtech/bottom-sheet-shall-we-drop-the-formalities-400515255829
#iOS #UIKit
Article covers important information about transitions in SwiftUI and differences between ephemeral vs render view trees in order to clarify this behavior deeply.
https://www.objc.io/blog/2022/04/14/transitions/
#SwiftUI