czottmann,
@czottmann@norden.social avatar

🧵 Biggest “surprise” of the last day? Being able to just push out a beta for my new macOS app without waiting for App Review or s/th is GREAT.

I mean, sure: The App Store is nice because it's well-integrated with Xcode (15, especially!), and takes care of hosting/ delivering/ payments/ IAP handling etc. Ace!

So among the things I had to do first: Set up payments (Paddle), licensing (Keygen), updating (Sparkle), hosting (Vercel/GH Pages/CF), and some workflows to take the pain out of …

1/5

Cykelero,
@Cykelero@mas.to avatar

@czottmann Agreed—the MAS is handy for hosting/payment processing, but if you can skip it you probably should. You're probably saving on fees, too!

How'd you go about implementing licensing in the app? Does Keygen offer a Swift framework for checking license keys?

czottmann,
@czottmann@norden.social avatar

@Cykelero Keygen: It does not. It's REST calls all the way down, though, so I built a wee abstraction around that using NetworkingClient (which I like more than AlamoFire).

You store the license key in the Keychain or UD, then call a Keygen endpoint, passing the key and the product ID, and it’ll give you the status (valid, expired, expired but valid for an earlier version etc.). It took me a while to wrap my head around it but looking back, it's not really that complicated.

Cykelero,
@Cykelero@mas.to avatar

@czottmann Thanks for these details! That's reassuring to hear, it makes sense the way to you describe it.

I was thinking about writing the licensing server myself, but Keygen seems affordable enough that I might skip that, at least at first!

czottmann,
@czottmann@norden.social avatar

@Cykelero I really don't want to go down that route. So should Keygen SaaS ever become too expensive for me, I'd look into setting up a self-hosted Keygen instance and moving all data from the service there.

Cykelero,
@Cykelero@mas.to avatar

@czottmann Right, that sounds like a sane fallback!

czottmann, (edited )
@czottmann@norden.social avatar

… releasing updates.

But you do that once for all your apps, ideally. If done right, all that infrastructure is reusable, and you only configure some bits and pieces for each app.

Of course, it's amazeballs to be featured by the App Store people, this can really boost your sales. But how often does that happen? To how many devs? There are literally dozens of us!!1 In reality, if you rely on the App Store to surface your app to your potential customers, I think you've already lost.

2/5

czottmann,
@czottmann@norden.social avatar

So is being on the App Store all that beneficial in that regard? I dunno.

I have one macOS/iOS app on the App Store, and it's doing pretty well. But it's a bit niche, too, catering to a very specific productivity-affine crowd. It found "its people", I think, plus it helps that I am one of "its people". (I mainly create apps for myself first.) I don't think my customers discovered it through the App Store.

Where was I going with this? Oh, right.

3/5

jpasholk,
@jpasholk@mastodon.social avatar

@czottmann what is your iOS app?

czottmann,
@czottmann@norden.social avatar
czottmann, (edited )
@czottmann@norden.social avatar

I believe not being on the macOS App Store doesn't hurt much. Whether your app is or isn't, outside discoverability is key – like having a website, explaining your use cases (I need to get much better with this), finding "your people" by communicating with folks (not broadcasting to!) on message boards or whatever channels they prefer. I try to be helpful without shoving my apps into other's faces. Not everyone is a customer, but we're all humans.

4/5

czottmann,
@czottmann@norden.social avatar

My life's #1 motto is "Don't be a dick", and it applies here, too. ;)

So, if you did, thanks for checking out my apps, I appreciate it.

Also, eat your vegetables.

5/5

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • tacticalgear
  • magazineikmin
  • thenastyranch
  • Youngstown
  • mdbf
  • everett
  • slotface
  • khanakhh
  • ethstaker
  • rosin
  • kavyap
  • GTA5RPClips
  • InstantRegret
  • DreamBathrooms
  • megavids
  • ngwrru68w68
  • Durango
  • normalnudes
  • cubers
  • modclub
  • cisconetworking
  • tester
  • osvaldo12
  • provamag3
  • anitta
  • Leos
  • JUstTest
  • lostlight
  • All magazines