Apple

I fancy myself a calm and collected person. Mellow. Only very few things on this good earth rile me up enough to make me want to punch my Mac’s screen. But boy, is Apple’s App Review consistently one of them.

Prologue

I recently released ScreenFloat v2.3.8. I submitted it to the Mac App Store on July 16th, 2026, and later that day, it was reviewed and approved by App Review without any issues. I published it on July 20th.

As sometimes sadly happens though, right after the release, I noticed a crashing bug. It’s sort of obscure, but prominent enough that I would have been uneasy had I not fixed it right away. I’ll skip over the part where I panic and curse myself for missing it – that’s my own personal hell.
I fixed the bug (one line of code!) and re-submitted to Apple with an expedited review request, which was granted.

Chapter I – The Devil Is In The Details. But Where Are They!?

The update eventually entered review and was fairly soon afterwards rejected for the following reason:

This is an automated message. The review of this submission cannot proceed. See below for more information.

An automated analysis of the submission indicates the app includes placeholder or otherwise insufficient purpose strings.

Purpose strings must clearly and completely describe your use of data.

Take one of the following actions:

- If the app needs access to a protected resource that requires a purpose string, revise the purpose string to explain how the app will use the resource and provide a specific example of how the data will be used. Then resubmit for review.

- If the app does not need access to a protected resource that requires a purpose string, remove the code that’s accessing the resource and the purpose string from the binary. Then resubmit for review.

Aside from the fact that it took me a second to understand what the automated message (a first for me, by the way) meant by “purpose strings”1, I was flabbergasted.
Which purpose string does the automated process deem “insufficient” or a “placeholder”?
What does “insufficient” even mean here? Is a purpose string not clear, or too short, or not easily understandable? Is it grammatically incorrect? Is it in a localization, or the English language version?
What’s a “placeholder” considered to be in this context?
Is it objecting to my use of the protected resource, or my user-facing sentence?
Which protected resource is it objecting to in the first place?

It’s painfully ironic that they require my strings to “clearly and completely describe” my use of data, when they themselves so marvelously fail to do so.

You know what’s “insufficient”? Your freaking automated message!
They might as well have told me “Something’s preventing us from further reviewing your app. Good luck finding it, asshole!”.

Even if I only had one purpose string in my app, this would have been annoying, because that detail would help quite a bit in knowing where to look and what to change.
But I have several of them. ScreenFloat is a screen capture app, so it can record your screen, and, if you tell it to, your microphone and system audio. (And, if you enable it, your key strokes during recording, but that doesn’t need a “purpose string”.)
In addition to those, the app has a Face ID purpose string, because folders in ScreenFloat can be locked and unlocked with biometrics. It has a Pictures folder purpose string for the specific case where a v1-library-import fails for certain files, so the app can move those there.
It has an Apple Events purpose string so the app can use and interact with Shortcuts. Lastly, it has a Contacts purpose string, because ScreenFloat can Quick Look vcards encoded in QR codes, and that only works with that Contacts entitlement, otherwise no preview is shown, or worse, the app crashes. Don’t ask me why.

Long story short, ScreenFloat needs all those purpose strings, and I believe they are worded correctly. After all, they have been like this ever since they first shipped.

So I reworded two purpose strings to demonstrate goodwill, and re-submitted.

Chapter II – They’re Just Trying to Break Me Now

Another rejection. This time from an actual person. Or so I believe. It didn’t say “automated message” this time around. I’m not sure if getting escalated from an automated rejection to a human one is reason to rejoice, or to worry even harder. But I digress.

The rejection this time was much clearer, but just as infuriating.

The app uses one or more entitlements which do not appear to have matching functionality within the app.
[…]
com.apple.security.personal-information.addressbook

I see.
Apparently, App Review completely ignored – or is ignorant of – the fact that in App Store Connect2, there’s a section called “App Sandbox Information”, specifically designed for the purpose of telling App Review what entitlements your app uses, and why.
I have this. See here:

So pardon my French, but it’s freaking right there.

But I did as they did, and ignored this.
I gave them the same (paraphrased) reason via reply-to-the-rejection, and now the app is “Waiting for Review” again. What a waste of time.

Epilogue

I cannot stress enough how frustrating these inconsistent app reviews are.
If you recall from the beginning of this post, just 5 days ago, on the 16th, I submitted basically the same binary, and it went through without a hitch.
Now, a few days later, with a one-line change in the binary to fix a crash, I have two rejections for stuff that has been in the app since I can’t even remember when.

What gives, App Review?
Why waste my (and your) time with asking for info on an entitlement, when it’s already there?
Why not object to it at the very first review of that entitlement with v2.0, instead of out-of-the-blue, after goodness knows how many updates in between?
What’s with that absolutely disgusting and disrespectful automated message with no details whatsoever?
What happened between July 16th and today, five days later!?

And most importantly of all: why won’t you let me release my one-code-line-crash-fixing app update for ScreenFloat already!?

[Update]: ScreenFloat v2.3.9 was accepted by App Review on July 22nd and subsequently released.

[Update]: Apple called. And now I feel bad. I hope it was clear that I’m upset with the process, not the people behind it.



  1. A “purpose string” is the text displayed to users for requesting protected resources, like the microphone, camera, etc.
    There should be a different term for this than “purpose strings”. How about “Usage Description string”, since that’s how they’re defined in code, like “NSMicrophoneUsageDescription”? That would make it way more recognizable to developers. ↩︎
  2. The place where developers submit their apps to App Review. ↩︎
Read more
Why is Xcode’s popup-documentation tied to the compiler? Kind of defeats its purpose at times.

I’d been eyeing the AirPods Max for a while, but held off on ordering them in hopes that there might be at least a refresh of colors. But that never happened, so I finally pulled the trigger and ordered them. A month later, here they are! But I’ll have to return them.

Apple AirPods Max in Sky Blue

Setup

In pure Apple fashion, and as it ought to be, setup is easy and quickly done. So much so, I actually almost missed it happened.

Build, Look and Feel

On paper, they’re heavy compared to other comparable headphones. On my head, though, I barely felt them at all – and I wore them all day during work and streams.

Sky Blue is a lovely color

They feel extremely comfortable. I love the mesh on the ear pieces – it’s very soft and squishy which, *when* I felt it, felt amazing.
My ears did get a bit warm after a while (expected with over-ears), but it’s still pretty cold here in Austria, so I’d expect this to become worse as summer closes in. At times, I was quite happy to take them off for a couple of seconds to let fresh (prince of bel-) air in.
Altogether, they do feel their prize – premium.

A small side note: The USB-C-to-Lightning cable included in the package is not braided. I don’t care either way, but that feels like Apple skimping a little bit. A bad look for their Max product?

The Max’s case is very nice to the touch. If I were to travel with them, I’d probably have them in an extra enclosure or wrapped up in something anyway, so while it does look odd and doesn’t cover/engulf the entire thing, I don’t have any complaints with the case. I was careful when taking them out of the case though, as the two ear pieces unnervingly clank together as they come out of the case.

Battery life is great; it lasts way longer than two work days, so: no complaints. Charging via Lightning doesn’t bother me at all, it’s how I charge everything anyway, except the Apple Watch.
Any battery life is better than my current AirPods’ – I get about 30 minutes on the right one, and an ~1h20 on the left 🤷‍♂️

Sound

Now, I’m coming from regular AirPods 2nd generation (released in March 2019), and I don’t have any other headphones to compare them to. Let’s just say, I expected quite an improvement in terms of sound – and I was not disappointed.
To me, they sound full, rich and just generally well-balanced. I won’t bore you with this too much; there are tons of other in-depth reviews out there regarding sound. They sound incredible to me.

Spatial audio/Dolby Atmos is a blast. “Here Comes The Sun” by The Beatles is a joy to listen to; Norah Jones’ “Come Away With Me” album is a pleasure to the ears.
As for Spatial audio with head tracking: it’s a nice gimmick, but I don’t really have or see a use for it when playing music or watching something. I tried it for a bit, then turned it off and never looked back. I’m sure this will play a role once Apple’s VR/AR headset is released, though 🤔
Spatialised Stereo Audio is very good in most cases, too. There was the odd song where the “ordinary” stereo version sounded more balanced and defined than its spatialised version, but for the most part, I preferred the spatialised versions.

Active Noise Cancellation and Transparency

I’ve never had or tried any noise-cancelling headphones before, so this was new to me. I went into this thinking noise cancelling means noise elimination: anything coming from the outside is completely blocked out.
That is not true. You’ll hear some stuff, and you won’t hear other stuff. Let me give you a couple of (weird) examples:

What I could not hear at all with ANC on:
– Our fridge running
– Our dishwasher running
– Our PlayStation running
– Our upstairs neighbor practicing her singing and piano
– Street noises when our balcony door or a window is open
– The passive ventilation in our bathroom
– My girlfriend washing her hands in the bathroom with me in another room
– My girlfriend chopping veggies in the kitchen

What I could still kind of hear with ANC on:
– Our dishwasher drawing water
– My girlfriend talking or coughing
– Myself unwrapping a cough drop
– The clinking of my spoon against my coffee cup
– Myself peeing (yes, I had to try that – who wouldn’t!?)
– Washing my hands (I’d just peed, after all)
– My girlfriend (no! not peeing!) typing on her keyboard
– Myself typing on my keyboard
– The active ventilation in our bathroom
– The washing machine
– Our capsule-coffee machine
– The doorbell very, very faintly, almost missed it

Now, keep in mind that even though I still could hear that stuff, it was reduced by *a lot*. With music playing, it became very difficult to make out any “external” sounds.
I quickly grew used to noise cancellation. It is very well done in the AirPods Max.
And if you’re wondering if wearing glasses made any difference: no, not at all, although it might depend on the kind of temples your glasses have (mine are pretty thin).

As for transparency, it’s downright amazing. (Transparency is a mode that uses the headphone’s microphones to let “external” sounds through, so you can more easily hear somebody talking to you). It doesn’t sound tinny or like talking into a pillow, it’s very natural and quite close to not wearing any headphones at all. I read somewhere that Apple’s AirPods do this best compared to other manufacturers, and I can see (or hear) why.

So why return them?

It all comes down to two minor, and one glaring issue.
On the second full day of using the AirPods Max, I noticed that the back of my ears hurt, because I’m wearing glasses, and the ear cups do press down on them (they must, it’s what they’re designed to do).
That became a bit uncomfortable and could only be fixed by taking off the AirPods, defeating the purpose of having them (taking off my glasses is not an option).

I could actually hear my own heartbeat (faintly, but enough so that it bothered me on occasion). On that note, even more pronounced, I could actually hear a low “drone” in my ears whenever I moved. Not because of ANC, but because the vibrations of my movement or muscles translated into the ear cups. That got annoying quickly.

And the kicker: their Bluetooth connection to my Mac (which is right next to me). Intermittent drops in playback, or a little “click” here and there – often several times a minute. I also experienced it using them with Apple TV (right next to the couch where we’re sitting), albeit much less so.

To justify spending €629 on a product, I really have to love it. And… I didn’t.
The droning sound when I moved, hearing my own heartbeat on occasion, and the connectivity issues… Especially that last one is unacceptable for a product at that price point.

I’m actually sad about it, because I expected love them. I like the way they look, feel, and sound, but at that price point, that’s just not enough.

Back to my old AirPods from 2019?

Nope. I decided to get the AirPods Pro 2nd generation. I ordered them and got them the next day – I did not have to wait another month for them to arrive 😄

Apple AirPods Pro

Noise cancelling is *almost* on-par. The Maxes cover your ears, so from that fact alone they are a bit better in that regard.
Transparency sounds just a touch “tinnier”, but it’s still very natural sounding.
I can’t hear my own heartbeat, nor any vibration droning in my ears when I move.
I can use them for workouts and outside, even when it’s raining.
I have not experienced any connectivity issues.
My ears don’t get warm, and my glasses’ temples don’t hurt me after a while.
They sound amazing. Not “for their size”. They sound amazing, period.

Pro max me happy

I’m surprised to say it, but I am way happier with the AirPods Pro than I think I ever could have been with the AirPods Max. Sometimes, pro is max less is more.

Read more