Summary of the previous situation

For those of you who follow my official account, you may have read my last post: Signing up for a new iOS developer account in 2021 and your experience with the package.

The following record is a sequel to this article.

After signing up for a new developer account this year and getting approved once, I never thought I’d have to go through a 13-day battle with 2.3.1. During the period of several times to touch the north, read dozens of online domestic and foreign other netizens posted the relevant experience, and communicate with various netizens, tried a variety of methods, finally difficult breakthrough. So I think it’s necessary to write an article about what happened.

First, introduce the basic information of the product.

  • Product types: Tools and Browsers
  • Version iteration: Second edition
  • Function update: add video sniffing and download function, product name change
  • Audit results: 2.3.1 and 4.3

The first change

After submitting for review, I immediately encountered 2.3.1 and 4.3. I have rich experience in 4.3. This product name I originally planned to use the “homonic words” of some popular words to warm up the early heat. So immediately restore the product name to the original product name.

Crucially 2.3.1, as mentioned earlier, I added in the product video sniffing and download function, indeed this is a very sensitive function, because the network resource download copyright involves a sensitive problem, after I think browser may have certain hedge attributes in this respect, a big deal to add a white list and white list for possible infringement part processing, But the response from Apple was surprisingly clear.

A summary of 2.3.1 is posted here

Guideline 2.3.1 – Performance

We noticed that your app may contain hidden features, functionality, or content. Specifically, your app allows users to save or download music, video, or other media content without authorization from the relevant third-party sources.

Needless to say, I’d rather not have this feature in order to maintain normal iterations of the product.

So I immediately removed the video sniffing feature and submitted it again for review.

Repeatedly rejected

It would be too redundant for me to record what happened next. So what happens is I delete the code, and then Apple goes on to say that I include the video download, and I delete it, and Apple stands by it.

In the end, I had to ask Apple through the response panel what was going on. I had completely removed the code for video downloads, so why would they say I included video downloads?

I phrased it roughly as follows:

Dear reviewers, I have fully checked the code and removed the code related to video downloads as required, but the review was rejected. Can you provide some tips and what changes should I make?

Apple’s response was unanimous:

Thank you for your reply. We continue to find that your app may contain hidden features, functionality, or content. Specifically, your app allows users to save or download music, video, or other media content without authorization from the relevant third-party sources.

The round went on four or five times until I had cleaned up the relevant code, and Apple gave me the same answer.

A complaint

At this point I was at the end of my rope, and I thought that since I was in the right, there was no need to humiliate myself. So he filed a direct complaint.

The appeal document is roughly as follows:

As a browser, my app provides download functions provided by normal websites (such as online storage), and these downloads are considered permitted. For video sites, this browser does not provide any download function, nor does it allow users to download videos through any means, and only allows online viewing.

Generally speaking, because my English is not good enough, this expression is generally a failure.

After only one day, the audit center received the request and confirmed the processing, and immediately received the reply:

Guideline 2.3.1 – Performance

We noticed that your app may contain hidden features, functionality, or content.Specifically, your app includes content that is considered pornographic.

“Your app includes content that is considered sexual, reply results shocking, how repeatedly see-saw” video download “suddenly became” pornographic “.

Continue to be rejected

Around the new audit results, I targeted and look for “pornography” related clues.

Since the browser by default evokes baidu’s home page, I wondered if it was because of the occasional soft pornography in Baidu’s news feed. So I just replaced the front page.

But after such alterations, the audit results are still:

Thank you for your reply. We continue to find that your app includes content that is considered pornographic.

This is very speechless, and I am not convinced, because really do not want to reply in English, after consulting a number of users, confirm that there is no problem in the reply panel in Chinese, I began to organize the following reply in Chinese:

Dear auditors, hello.

This time, we have received the notice of “Guideline 2.1.1-Performance” which was rejected by the audit again. To clarify, we have not hidden any content of the software, and we have reviewed the implementation of the application third-party library (we have only introduced one third-party library at present). Verify that third-party libraries are fully compliant with the App Store review guidelines and Apple’s Developer Program terms.

And a third-party library privacy policy here: www.umeng.com/page/policy

As for your remark that “your app includes content that is considered local content,” we do not agree with that. Our application is a browser. The content that browser presents is decided by the website, browser itself does not provide content, provide without authorization, hide pornographic content impossibly more!

Dear reviewers, if you insist that our products violate the rules, could you please provide us with specific tips of violations, whether screenshots, sensitive words that may cause misunderstanding, etc., which will be of great help to us.

Have a nice day.

In the morning of the next day, the review panel replied, still rejected, but the copy changed:

Thank you for your reply. We continue to find that your app contains hidden features or functionality that can change the behavior of the app after review. To resolve this issue, it would be appropriate to ensure that all features and functions in the app are visible and fully accessible during review.

This copy mentions only hidden features, but doesn’t mention “porn” or “video downloads.”

Unbearable rollback version

Given that I had so much trouble getting approved for the first edition, why did I have such a hard time getting to the second edition? In that case, roll back the code to the first approved version. Only two changes remain

  1. Replace App Icon with new.
  2. App Store keywords and other updates.

Unexpectedly, it was rejected even after submitting it for review:

Guideline 2.3.1 – Performance We noticed that your app may contain hidden features, functionality, or content. The App Store ecosystem is built on trust and users should never be misled about the apps they download. Attempting to hide features, functionality, or content in your app may lead to removal from the Apple Developer Program.

All in all, 2.3.1 again, but without mentioning the specific reasons, neither “porn” nor “video downloads” are mentioned.

Continuous response results

Here I start wondering, for the first version has been verified, illustrate the product itself should be small, second edition provides “video download” functions, leading to the 2.3.1, it originally, but has also been dismissed after the subsequent continuously modified, even retreat version also doesn’t work, then began to encounter the rules clear 2.3.1, The follow-up audit is rejected by some audit inertia, has not changed back to the first version can be solved.

With that in mind, I decided not to change the code, and after arguing directly with both the response panel and the reviewers, and after two more bad rejications, I wrote the following in the response panel:

Dear reviewers, I don’t know why you might think that my product has some kind of “hidden” feature, but I have to say that there is no subjective “hidden” feature in my product, and I am strongly opposed to “hidden” feature which is disruptive to the market order.

However, I do not rule out the possibility that some third-party libraries may have this kind of behavior, so I have been very cautious in introducing third-party libraries, so far only Umeng and HPple have been introduced. (I will provide screenshots of these two libraries in the attachment). I will remove the code for both libraries if I need to. But from what I’ve looked at so far, they’re unlikely to cause hidden switches in my products.

When I was looking up information on the Internet, I learned that some products violated rule 2.3.1 because the code contained WebView and evaluateJavascript. Here I need to explain that the product I developed is a browser, and the browser realizes basic functions through WebView. It is reasonable and necessary to run the script through evaluateJavascript. If this is the reason for the violation in 2.3.1, I think it needs to be analyzed according to specific product cases.

If my product violates 2.3.1 due to other reasons, could you please provide specific details, such as sensitive words in some function names, so as to help me complete the review, which will be of great help to me.

In addition, please provide my mobile phone number + 86-XXXXxxxxx. If you can contact me by phone to achieve better communication effect, I will be very grateful.

After Posting this lengthy response and waiting for news, I got an email the next morning (2021-07-05).

The status of your app, xxxx, is now “Ready for Sale”.

The above is my 13 days of audit process, 13 days to say long is not long, Apple audit efficiency is also very high, in addition to the appeal of that time is two days, almost every time is in the night 1 to 2 days on the results. But the whole process was very difficult, fortunately, the end is a happy, finally passed the review. I believe that after this, the next review will be more smooth…… ?

That’s a lot to say just to record the process, during which TIME I looked up a lot of online experiences and made a lot of conclusions myself. It will be recorded in a separate paper.


Other shares:

Group friend Jinlan’s 2.3.1 audit success

4.2, 4.3, Other, and technical solutions related to the closure

How to cry to Apple effectively

What can developers do about a 14-day ban from Apple


Friends of mobile developers can add my public account Fenghai Causeway to add group menu bar to apply to add group to complete the application, together with common progress.