21 entries · All tags

  • 🥳 Happy Thursday! I’m excited to release the big 2.0 update to my album player @longplay today.

    Where 1.0 focussed on discovery and the album wall, 2.0 focusses on the listening experience and organising your albums.

    There's a now playing screen, album shuffle, CarPlay and more. Free update for existing users.

    Read about the story behind the update and what's next:
    https://adrian.schoenig.me/blog/2023/08/31/longplay-2.0/

    Row of four iPhone screenshots:
- The album wall, which now has a collection picker
- The new now playing screen, including a shuffle button
- The various sort orders, including the new Memory sorting
- An in-app dictionary of the sort orders

    I wouldn't have gotten to this by myself. So it's time for kudos!

    Thanks to all the beta testers for their feedback. The many kind words let me push through phases of low motivation. In particular special thanks to @nier for his invaluable and detailed feedback, and helping fine tune the behaviour of that fun shuffle button.

    Also thanks to @ivanski for his detailed feedback on the initial release, which inspired quite a few under-the-hood improvements in 2.0.

    Many many thanks to @stroughtonsmith, @jsnell, @marcoarment, and everyone else who helped spread the word on the initial release, which really helped a lot. Marco, sorry to keep you waiting so long for a Now Playing screen.

    Thanks also to fellow music app developer @adamlinder for the kind exchanges and his App Store review-related suggestions. If Longplay isn't quite for you, @albumstheapp probably is!

  • Introducing Longplay 2.0

    I’m excited to launch a big 2.0 update to my album-focussed music player, Longplay. If you’re interested in the app itself and what’s new, head over to longplay.rocks or the App Store. In this post I want to share some... more…

  • Tech Note: UIHostingConfiguration can cause UICollectionViewRecursion

    Rotating a particular screen in one of my iPhone apps from portait to landscape resulted in a half black screen, a crash, and the following mouthful of an error being logged: more…

  • The essence of an app

    Horace Dediu has a way of putting things into an insightful perspective that makes you look at things differently. In the latest Critical Path episode, he points out that what people enjoyed about the iPod (and the Walkman before) wasn’t... more…

  • Introducing Longplay

    Longplay, my first self-published iOS app, is now available on the App Store. I’m super excited. more…

  • Tech Note: Using Carthage in a Catalyst app

    “The process starts by checking a single box in Xcode” and then continues with compile errors. At least if your iOS app is using Carthage to manage its dependencies. Here my notes from working through those in my projects that... more…

  • Tech Note: iOS 13 toe-dipping: Multi-window support on iPad

    The code samples from Apple’s WWDC sessions and the sample code for supporting multiple windows, are a bit inconsistent which can make it a bit bumpy to get started. Here is the setup for supporting multiple windows on iPad that... more…

  • Framework Sherlocking at WWDC 2019

    WWDC is lovingly referred to as “Christmas for Apple Developers” and, goodness, was it a Bescherung this year! Apple has been hitting it out of the park at this year’s WWDC. While in the past many developers have been worried... more…

  • Next steps for Siri, and other WWDC 2019 wishes

    Apple’s annual developer conference, WWDC, is just around the corner. As a developer of iOS apps and heavy user of macOS, this is always an exciting time of the year. There is talk about iOS apps being able to run... more…

  • Tech Note: Keyboard shortcuts and the iOS responder chain

    When adding support for keyboard shortcuts, a seasoned iOS developer might raise an eyebrow when noticing that UIKeyCommand takes a selector for an action, but no target. This is because the keyboard commands1 are not send directly to any of... more…

  • Tech Note: Good practices for RxSwift-based view models

    Everyone has their own preferred way of structuring their app code. I have grown to like view models and RxSwift. I am not trying to convince anyone to use it with this post, but rather want to share my best... more…

  • Tech Note: Getting push notifications for fastlane errors

    Fastlane is an excellent and essential tool for app developers to automate many of the otherwise time-consuming, tedious tasks. With a simple terminal command you can make run all the steps from compiling and packaging an app, to uploading it... more…

  • Hey Siri, pre-heat my car

    When I got my Renault Zoe, I was excited to see that it came with an accompanying app, which let’s you remotely pre-heat (or cool) the car and also check the charge status of the battery. Being able to pre-condition... more…

  • Tech Note: Sharing iCloud Drive documents from your app

    I’m building a document-based iOS app for which I want to add sharing and collaboration features. Where possible, I try to use native iOS frameworks and features. When it comes to files, this means using iCloud Drive. This made me... more…

  • Tech Note: RxSwift in custom views, the clean way

    RxSwift let’s you update your views dynamically in your app in many ways – many of which can get messy over time, as I’ve learned the hard way. The approach that I got used to in order to update views... more…

  • Tech Note: Importing app module in unit test fails to compile

    For months, CI and Xcode unit tests for a project at work have been plaguing me with a strange issue: At times and without obvious cause, some unit tests started failing to compile, saying that the classes of the app’s... more…

  • Tech Note: Lessons from converting complex submodules to Cocoapods

    I have recently converted two fairly large iOS libraries (written in a mixture of Objective-C and Swift) from a plain git submodule to a set of dynamic frameworks that can be used as Cocoapods. The process was quite tedious, so... more…

  • Tech Note: Upload rejected due to CFBundleResourceSpecification

    When submitting a new build to the App Store today, iTunes Connect greated me with a error that the build was rejected due to the use of CFBundleResourceSpecification in the Info.plist file. more…

  • Tech Note: Custom transitions for pushing container view controllers

    A common user interface paradigm in TripGo is to provide a list view with an associated map view. On the iPhone we display them on top of each other, while on the iPad we display them next to each other,... more…

  • Tech Note: Drawing multi-coloured lines on an MKMapView

    MKMapView is a great toolkit to customise and add a variety of things to a map on iOS, but one thing that I found lacking was an easy way to draw a multi-coloured line. Specifically, I wanted a way to... more…

  • Tech Note: iOS, AddressBook framework and GCD

    For my latest iOS app I was working on an autocompletion field that hooks into the user’s phone address book and calendar. This is a great way for making the user feel at home in your app and makes your... more…