ContextI've recently released a new Spanish word puzzle game for iOS and macOS, Sopilabitas (Word Wall ES). Here's a 30-second video preview:
Why now?I'm not sure if the 5.2.3 guideline is new, or if Apple has recently added some automated checks to look for possible infringements of this. The thing is that I have other word puzzle games in the App Store (Silabitas, Sil·labetes, and Syllabits), all sharing similar code and assets, and I never got a rejection because of this guideline. Searching for people with the same problem I found that many get this rejection because they include in their app a library that enables YouTube streaming. This GitHub thread is quite interesting: XCDYouTubeKit App Store Rejection. I do not use any Third-Party libraries, so that couldn't be the case. I only use Apple libraries and everything is programmed natively in Swift, with no external dependencies. Precisely to avoid this kind of problems where you don't know exactly what's going on. But I didn't know what was going on. And Apple didn't explain.
Apple Resolution CenterWhat a pain. I got two separate rejections for exactly the same issue: one for the iOS submission, and another one for the macOS submission. The first thing that comes to mind is: should I reply the same to both? One didn't seem aware of the other, so I tried replying separately. The only thing I thought that could be doing any audio or video streaming is a WebView component that I use to search for definitions and translations of words (although I also use this in my previous games), so I made a more restrictive policy of the websites it can access and resubmitted the game. I got rejected again. The macOS rejection became a "Metadata Rejection", because they just required me to submit proof that I had the rights to that third party content. But what content? My inquiry to Apple:
Could you explain what is it that provides unauthorized access to third-party audio or video streaming? Is it because of the App Transport Security Settings? I disallowed arbitrary loads in the latest build but it's still being rejected. All the assets in my game are drawn by myself, and all the music is under Creative Commons 4.0, as listed in the description of the app.(I also directly contacted the author of the music and I got explicit permission to user his music. Again, I've used his music in all my games and I never had a problem.) The reply from Apple looked templated:
Regarding the Guideline 5.2.3 - Legal, your app contains contents or features that may violate the rights or one or more third parties. Specifically, your app provides potentially unauthorized access to third-party audio services.Well, I do not access any third-party audio services. At least not willingly. I thought it could be because if you access Google Translate from the WebView, you can click a button to listen to the pronunciation of those sentences from Google Translate. The thing is that this rejection was for the macOS submission, which doesn't use the WebView, but jumps directly to your external browser instead (but the WebView reference still appears in the code). At this point, I asked to speak to an Apple representative, and they scheduled a call for 5 working days later. In the iOS submission thread I told them I had scheduled a call with an Apple representative, from the macOS rejection thread, and they sent me a Clippo-like reply: "It seems you want to speak with an Apple representative. Give us your phone number and someone will call you"... Something like that. The Apple representative later confirmed that they do send automated replies at times. I'll skip the gazillion frustrating messages in the Resolution Center and jump to the end.
The Apple representativeAfter a week or so I managed to speak to someone at Apple. It turns out it was all a misunderstanding. They thought I was streaming the music for the game, when it's all embedded in the binary. Regardless, I had put all the license information in the description, so I'm not 100% convinced with that explanation. Also, he couldn't explain why this flag has been triggered now, but never before. Basically, I want to know how to avoid these rejections in the future, because the back and forth with Apple is not fun. He couldn't explain those things, but at least he was supportive. He was calling for the macOS rejection, but I told him I had the same rejection on iOS and he looked at it as well. He said that both submissions would be back to review in 24 hours, and that probably they would get through. But that wasn't the end. Yes, the macOS submission went back to review after a couple of days and it was approved on the third day. However, the iOS app continued rejected. I sent a message to the Resolution Center after one week and I got not reply. After a few more days I think I poke them again and asked to speak again with someone, but the game went finally back to review and it got approved soon after.
Conclusion?Not sure what to conclude from this. Is Apple worse than Google in this respect? No idea, because I'm not releasing games for Android. Google has a similar guidelines to publish in their store. The problem is not with the guidelines, but with the support for developers. I'm paying Apple an annual developer fee, but I haven't managed to make any profit from my games. Is Apple thinking I'm not worth their time? I make my games mostly for friends and family, as a hobby. But this legal process is for big companies rather than individuals. They supposedly support indie developers, but the process is becoming unfriendly. I understand that there are too many devs and they need to automate process to detect infringements of guidelines and also automate replies whatever possible. But even if I understand, it doesn't make it less frustrating. Previous rejections where much more clear: if you press this, your app crashes. Fine, I can fix it. But I feel for this legal guideline they are being over-cautious because they want to protect themselves from lawsuits from third-parties. They want the developer to be responsible for any liabilities. But obviously I can't provide evidence of something if they don't tell me exactly what that something is. I started creating Sopilabitas in January, so after 8 months of development one is eager to release, and getting a rejection of something you don't understand is quite upsetting. I'm taking a break from indie development for a few months. But I'll come back because I have some other ideas waiting in the backlog.