iOS game App Rejected due to App Unresponsive

I have a puzzle game that is being rejected as unresponsive when todays puzzle is clicked. The app works perfectly under local versions and on test flights.

The app downloads a file via ftp each time that button is clicked. Does anyone know of an issue in the apple test environment that would prohibit ftp? I am showing a message if the app is not connected to internet.

I haven’t submitted an app yet and so can’t tell you. That said, I asked about app submission in a lab session at WWDC this year and was told if I was rejected I could ask for call clarification so I’d know the why. I wonder if they could also answer your question then too.

I haven’t watched it yet but was also referred to this video (not sure what it goes over): https://developer.apple.com/videos/play/tech-talks/10885

Hello carey.green,

While I can't tell you specifically why your app may have been rejected by App Review, here are a couple of things to think about:

  1. If your app relies on a network, it needs to handle real-world network situations, such as slow networks, firewalls, blocked ports, etc. Read Designing for Real-World Networks, for example.
  2. It's possible, maybe even likely, that your app works perfectly during your testing because you are in close proximity to your FTP server. You should test when you're away from your development location, at least.
  3. If your app is constantly downloading files from an FTP server on every button tap, you've probably mis-architected it, and should reconsider the approach (for example, include those files in your bundle, use On Demand Resources, or, if you're targeting iOS 16, consider Background Assets.
  4. Consider opening a Technical Support Incident with Developer Technical Support to get more guidance.

—jasonag.

To follow up from what Jason wrote, AFAIK App Review doesn’t have anything against FTP. However, at a technical level, which is all I’m qualified to comment on (-; I strongly encourage you to stop using FTP. See my On FTP for the full backstory here.

Oh, and what FTP API are you using? CFFTPStream?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

The unity command is:

    downloadWithFTP(FTPHost, path, FTPUserName, FTPPassword);
    Debug.Log("Post download");

FTP is older than IP. Yes, really. It's that old.

FTP severely allergic to firewalls and modern networks, and leaks credentials in cleartext. Firewalls have to sniff the FTP traffic to permit FTP to pass the firewall. And many firewalls just block FTP traffic.

If you're not using those FTP credentials (and since you're using FTP, the credentials are just going to leak), see if using HTTPS and UnityWebRequest works for your needs...

https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html

The unity command is

Unfortunately I don’t know how that maps to our APIs. You’ll have to ask your third-party tools vendor as to whether this uses the deprecated CFFTPStream or not.

Honestly though, your web would be better spent getting off FTP per Hoffman’s suggestions.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

iOS game App Rejected due to App Unresponsive
 
 
Q