Hi, I’m Jay Shaw. You can vote for me by clicking here.

incident

Recently, the mobile game developed by our company is about to be launched. This mobile game is based on the popular unreal engine UE4. The company has also invested all its manpower and financial resources, so our whole company has great expectations for it.

After more than 3 years of painstaking efforts, the project team finally prepared to start external testing in November this year, and we seem to see the dawn before the success of the project, a popular mobile game will soon be born! Raises, bonuses, getting to the top of your game — it’s exciting to think about it.

We distributed the iOS test through Apple’s own TestFlight platform. After collecting the email addresses of testers in the early stage, we activated the test on the opening day.

TestFlight went well, but the worst was just beginning.

Under normal circumstances, the TF test and the formal trial were carried out at the same time, and the problem appeared in the formal trial.

Not long after submitting for approval, we received a message that the application had been rejected, to the effect that their reviewers could not connect to our game server and therefore could not proceed with subsequent approval. This is quite normal for our game industry. Maybe the configuration file was not enough during operation and maintenance deployment, because the audit service required a clean environment when it was submitted for audit. Therefore, we normally deploy two sets of services, one for TF test and one for audit service.

Naturally, the operation and maintenance had to take the responsibility. The project team brought along the test team and installed the development package on the equipment to reproduce the Bug, but after repeated testing, it was found that no matter using 4G, WIFI or finding overseas colleagues to help test, all the results were able to enter the game service.

This makes a headache, our mobile games project is not the only one, how only UE4 is stuck in the neck!

The burden of solving this problem naturally falls on us in the iOS group. First of all, I started to collect information on Google crazily, because there are still few mobile games made with UE in the market, and there are not many guidelines to avoid the pit. Secondly, we also analyzed whether it is because of the lawsuit between Apple and Epic some time ago. As a result, Apple blacklisted Epic’s products.

But after a careful search, we found some clues. In fact, there are many similar posts in Apple’s developer forums, but there is no substantive solution, as shown in the figure below:

Another said he was approved by Apple when he switched from UDP to TCP. So, I found the main program of the project – the social king, let him modify the network protocol, after listening to my words, the social king hurriedly shook his head straight call can not change, change the engine of the network framework is too complex, that this road seems to be unable to walk, then continue to bury their heads in finding a solution! .

I assume Apple has whitelisted, blacklisted networks, so it must have an external document for developers to look at! With a try mentality, Google a little Apple UDP TCP, as expected, there is such a document, the document address is: support.apple.com/en-us/HT202…

This document details the range of valid port numbers for Apple application development:

There are some ports that Apple uses for its own products, so why don’t we just pick the ports that apple doesn’t use? So, I was confident to find the king of Society and said this solution, the king of Society’s deep dark eye instantly lit up, immediately picked up the keyboard cracking up, changed the client port number to 49152-65535, now there should be no problem come on, we all according to its document to do. It must have passed the audit. I happily submitted the new version and can leave work on time today.

Meimei’s after a night’s sleep, cell phone is the news of the application being rejected, or even not on the server, this is the beginning of the early in the morning crit, almost put me out on the bed, instantaneous ball as frustrated, I put the rejected messages to social queen, social Wang Jiujiu did not give me back information, I once thought that he had been laid out on the bed, almost knocking at the door to his house. Did not expect that I just arrived at the company, to see the king of society has been in front of the computer to change the Bug, it seems that the mind of the main process is really good, the ability to fight is really stronger than I this kind of vegetable chicken.

It seems that all roads are blocked, how to do ah! Opinions vary during the period, there are the following versions, you can analyze whether it makes sense, anyway, I have not sought proof.

First version

Some say the pandemic has caused some of Apple’s reviewers to work from home, and their proxy network will forward the requested ports, resulting in port numbers that are not in the range.

I think it’s a little bullshit on this one.

Version 2

Some analysis, because apple asked us server must support ipv6,, if you don’t support our cloud services in the middle chamber of commerce of the ipv6 network adapter into the ipv4, which leads to the scope of the port will change, to ensure the effective range, with luck, probably the result of transformation within the effective range, Otherwise, it will not be there, resulting in the reviewer can not connect to the game server.

The solution is to change our game server to support ipv6, but I didn’t check this out.

As a result, our audit was stuck for nearly 2 months because we couldn’t get into the game server. Here’s a look at our call back record:

After the order

The reason I’m writing this article is because this weird thing is getting on my nerves. Since you can not review, I can consult your technical experts! The Apple developer account offers technical advice about two times a year, so I wrote an email to Apple’s technical support using Google Translate in good faith.

To my surprise, Apple wrote back to me, to the effect that they supported Chinese and could explain the problem to them again in Chinese, so I sent it again in Chinese.

But, here’s the thing, he actually replied to me that he couldn’t handle the technical issue, it wasn’t their technical support.

Although I did not ask for help many times, it was not the first time FOR me to ask for technical support. It was the first time for me to encounter such a strange reply. Haha, it made me laugh and I did not know how to reply.

Originally, I thought I might be dismissed by the king of society because I could not solve the problem, but I will not mention it again on the chance. Maybe there’s a new auditor.

Key to the, this review unexpectedly into the game, certainly is my dad moved by apple, although the reason was rejected, or because the purchase but can enter the game let me see the hope, I the results immediately inform the king of society, and hard bragging about how good, society and the king said, “the young man did a good job, after the game to make money, Write you a big score.”

Well, since can enter the game, that this problem is much clearer, certainly is not the problem of our game, such as the social king out of a good bag, I cheerfully for the NTH trial.

However, today I received this rejection message:

I specially sent myself a TF test using the same package, and there was no problem in the test.

I now seriously doubt that apple’s reviewers are newly trained

At present has appealed, to be continued….

idea

After going through this weird thing, I came up with an idea. How about I set up an open source project called “Weird Auditing for Apple”, where everyone can write down some weird auditing things they have encountered and the solutions to help more developers avoid the pit?

Feel free to leave your comments in the comments section.

The last

I’m participating in the Nuggets Community’s Annual Creators list, please vote for me!

There are three ways to vote:

Web ticket

Plug-in ticket

You need to download [Nuggets App] and log in to vote. After entering the top left corner of the home page, vote according to the following steps:

Previous articles:

  • Binary tree brush summary: binary search tree properties
  • Binary tree summary: binary tree properties
  • Binary tree summary: binary tree modification and construction
  • StoreKit2 smells this good? Yeah, I tried it. It smells good
  • After reading this article, I am no longer afraid of being asked how to construct a binary tree.
  • The game guys are trying to get people to pay again. That’s bad!
  • Take you rolled a netease holding cloud music home | adapter
  • NetEase Cloud Music Home Page (3)
  • NetEase Cloud Music Home Page (2)
  • NetEase Cloud Music Home Page (a)
  • Does the code need comments? Write and you lose
  • I would not study in Codable for a long time. They are for fun
  • IOS handles web data gracefully. Do you really? Why don’t you read this one
  • UICollectionView custom layout! This one is enough

Please drink a cup ☕️ + attention oh ~

  1. After reading, remember to give me a thumbs-up oh, there is 👍 power
  2. Follow the public number – HelloWorld Jie Shao, the first time push new posture

Finally, creation is not easy, if it is helpful to you, I hope you can praise and support, what questions can also be discussed in the comments section 😄 ~ **