The issue was indeed due to a bug in iOS 11 that affected many devices under some conditions. We finally found a way to work-around the iOS 11 bug.
Given how long it took to solve this issue, I thought we should write a blog post to explain its history.
The reports of a crackling sound issue emerged with iOS 11 in late Sept 2017. The reports were widespread, affecting many apps; so we expected Apple to just fix the issue. Apple did in fact issue fixes for some of these issues.
But in mySleepButton’s case, and in the case of several other apps, the noise continued. We raised a bug with Apple, but it lay dormant. We continued to expect Apple to resolve the issue, given that some of the affected apps have a much bigger user base than mySleepButton, YouTube being the most prominent one. Meanwhile, we investigated work-arounds on our side.
The crackling sound issue was clearly an iOS 11 bug, given that the
- the sound was fine before iOS 11
- the issue only affected some iPhone models
- the issue did not affect iPad
- the issue only affected use of the built-in speaker (in some iPhone models), never external speakers or earphones, yet mySleepButton does not do anything different for those different cases (I don’t think we can even detect whether the user is using a speaker or earphone).
We couldn’t figure out how to work around the problem. We reviewed the Apple Developer forums, of course. But none of the proposed solutions applied to our case. So we contacted Apple Developer Technical Services (DTS), which led to a protracted interaction.
Apple DTS, who reviewed our code, finally asked us to raise another bug with Apple, thereby acknowledging the problem was not with our code, but due to an iOS bug. So we raised another bug.
This led to some back and forth again with Apple. But Apple Bug tracking team, as they notoriously are, was quite slow at responding to our updates. They were off during the December holiday break. Eventually their bug report people became completely unresponsive. Perhaps they were delayed by the unprecedented major bugs and issues that Apple encountered in the fall (e.g., battery throttling security issues).
Although the problem was with iOS, during this period we nevertheless tried several work-arounds. For example, we tried playing our sound files in iTunes for iOS 11 — they played fine, so we knew the problem wasn’t with our sound files. mySleepButton shuffling seems random and simple from the user’s perspective, but in fact we do some fancy computations during play. So we tried some simplifications. But the problem even affected our tutorial. We experimented further on our side.
Apple issued other iOS 11 updates that purportedly fixed sound issues, but did not help us. We repeatedly monitored the web to try to see how many other apps were affected, and to identify the cause of the issue and possible work arounds. The number of apps affected by the speaker issue dwindled. Complaints on the net became harder to find. Still, given that there were complaints with other apps, and given everything else I’ve noted in this post, it remained clear this was a bug with iOS 11 (which in fact it is).
We updated the Apple Bug report almost every time we tried something new,to help them narrow down their issue.
Meanwhile, we continued to work on improvements to mySleepButton. We introduced the most significant and extensive improvements ever to the content of our packs.
I then contacted Apple DTS again to let them know that the issue was stalled on the Apple Bug reporting side, and that we needed some help. I asked them if they would please at least contact Apple iOS Bug team to prioritize this issue, as many of our customers were suffering as a result. Apple DTS told us essentially that because it’s an iOS bug, they couldn’t help us, it had to be resolved by the Apple Bug team.
As you can imagine, this issue generated a lot of updates to our own internal bug report, and a lot of email. We also experienced some turnover on the marketing and software side during this period, which slowed things down. This led to some key pieces of information falling through the cracks, information that would have allowed us to work-around the issue earlier, particularly as the number of issues reported on the net decreased. The obvious clue was that the crackling issue appeared in the tutorial, which is simpler code, not just the cognitive shuffle part. Critical aspects of this clue unfortunately were lost as some of the test information was not conveyed properly between our Quality Assurance and Software Development teams. (We’re a small company, but we do not all wear the same hats 😉 ).
Finally, we identified some part of our code that we could modify to avoid the iOS 11 issue. This is something we wish we had identified much earlier. Critically: we thought we had tested for it, but hadn’t. In the enormous amount of internal correspondence that this issue caused at CogSci Apps, key information fell through the cracks.
We can explain these processes, and the delay in working-around the iOS 11 bug, in organizational or business terms (as alluded to above). But as a cognitive scientist, of course, I can’t help but look at it in terms of underlying information processing. There’s a phenomenon I learned about in the 1980s that comes to mind as a partial explanation. It’s called “blocking”. It’s actually from the classical conditioning literature. But we can also interpret it as a higher-order cognitive bias. When there is an obvious and true explanation for a phenomenon, it can lead one to fail to detect or adequately assess independently true explanations.
The issue was obviously very inconvenient for some of our users. And it also cost us dearly. It consumed a lot of our time and energy. It affected mySleepButton’s ratings, and consequently our sales. The last time I checked the mySleepButton App Store ratings before this issue, it was rated five stars. The comments on the Canadian app store were almost uniformly positive. But the sound issue caused our rating to drop to four stars. We received several complaints about crackling, via email, on the App Store and on the web.
With the issue resolved, I hope and expect affected customers will get better sleep, and our ratings will go back to five. We will continue to improve mySleepButton, and have another mind-bending product we will announce very soon.
Be that as it may, we apologize to our users for the delay in resolving this issue. We appreciate your patience. And we wish you many peaceful nights.