Message from Apple Review...

Just got this message for a few of my apps that are live in the app store (and have been for years).


"Your app, extension, and/or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with section 3.3.2 of the Apple Developer Program License Agreement and App Store Review Guideline 2.5.2. This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes.

This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app.

Please perform an in-depth review of your app and remove any code, frameworks, or SDKs that fall in line with the functionality described above before submitting the next update for your app for review."


I'm not sure what they are referring to, or how to resolve this issue. I am guessing there will be a swarm of these posts coming from affected developers. Does anyone have ideas what would cause this & how to resolve? I dont even know where to start...

>and see if Apple accept/reject whcih hardly seems intelligent..


This isn't a new situation. Apple tends to keep things vague so they can define/apply on the fly, without being boxed in/dragged into debate ("You didn't explicitly write that I couldn't do this, so get out of my way"), so I don't think there is a solution that favors everyone.

Of course, it leaves devs to poke around in the dark, at least until the dust settles, and some will find it more of a burden than others - welcome to the app store.

As far as we can tell React Native is the issue for us.


What is entirely possible is that the 'forbidden' methods exist within the RN library regardless of whether they get used or not (dont know how intelligent the linkers are for different langs these days). Simply by virtue of the methds existing in the library the app fails whatever testing tool is being used.


So the key is that 'its certainly possible to use it that way' even if no one ever does/did knowingly or otherwise.


Any one any clue as to who/what determines exactly what is considered as "significant changes to your app’s behavior".

As far as we can tell any change at all is considered "signficant".

We just had an app rejected twice based on a minimum functionailty reasoning, we removed Code-Push and the app was approved??

My app was rejected

techrul.com
Message from Apple Review...
 
 
Q