Mac app notarization from the command line

Apple announced that early next year macOS will start highlighting notarization status more prominently. This is great, because currently the difference between Developer ID and notarized Developer ID apps is just a short sentence in a Gatekeeper dialog. Also notarization, which is optional today, will be required by future versions of macOS. The new documentation is very detailed and surprisingly precise about resolving common issues, but does not describe how to automate an asynchronous notarization process. Read more

Team Dashboard

I believe NativeConnect has got a truly innovative and convenient pricing model, if we speak about Mac apps. You can download and edit metadata for your apps, together with screenshots and in-app purchases, for free. For submitting all edits back to the App Store Connect however, you need a paid subscription. With this approach, the whole development team should pay for just one seat, rarely two. For the best experience of managing your team, we’re launching Team Dashboard, as a separate website. Read more

Distributing macOS apps via App Center

I’ve been a happy customer of the HockeyApp since their introduction back in 2012. Almost immediately, in 2014, bitstadium was acquired by Microsoft to become a part of the Visual Studio App Center. Fortunately, Microsoft did not shut down the service. With time, the HockeyApp got even better, and recently they announced a full transition to the App Center during 2019. Which is great news, because the App Center has improved analytics and crash reporting. In this post I will demonstrate these capabilities by releasing a new Mac app via the command line. Read more

App Store Connect API v1

Last week, three months later than promised, Apple modestly released an official API for App Store Connect. In the near future, approved iOS and macOS developers will be able to automate tasks related to TestFlight, User Access, Provisioning and Sales Data, all without visiting the online portal. This is important news which of course has great impact on NativeConnect development. So let’s have a look at what they’ve added. Read more

Sharing modules using the Swift package manager

Tools like CocoaPods and Carthage work great when you share code with other developers, but they are not so good for local work. We often have code which should be reused between multiple apps. Or we may want to split business logic into separate modules for a massive app. Mentioned dependency managers can work with local frameworks, but their workflow is not optimized for this. Luckily, Swift 4 added support for local packages as dependencies. I will show how to edit multiple packages in a single Xcode project. Read more

Makefiles for Swift packages

NativeConnect for Mac is 100% Swift, and it includes three frameworks built with Package Manager: NativeKit, NativeUI, and NativeData. This nice setup allows for developing embedded libraries and their tests independently of the main app. Today I’d like to share one simple trick which helps to switch between internal packages fast and easily. Read more

NativeConnect Internals

Here I’d like to share some technical information about the app. If you are into Cocoa development, maybe you will find this post useful. This is a technical article, and it would be nice to periodically discuss the ongoing challenges and their solutions on NativeConnect. Read more

NativeConnect Pricing

This product started as a weekend project. After developing it for a while though, I came up with many cool ideas, and the small utility grew into the mind-blowing feature set that needed a totally different approach. After I figured out how to wrap this all into Xcode-like interface, it became evident that this app is worth selling. Which price should it have however? Read more

NativeConnect Workflow

The most important thing about NativeConnect is that it works with documents. Each library is a file package, and it may include accounts, apps, versions, and their metadata. You see all items in the Sidebar, and the rest of window is used for editing current selection. We went with Xcode-like user interface to provide the familiar user experience. Read more