Dou*_*ior 5 app-store react-native
I have two apps in different accounts, rejected under the topic 2.3.1 - Performance, after upgrading to the React Native 0.59.3. Nothing was changed in this apps, except the RN upgrade.
But, both of apps are not using obfuscated code, selector mangling, or features meant to subvert the App Review process. Both are apps thats change it's contents naturally based on the API data, like many others apps like Facebook, Twitter, Instagram, etc.
Both are simples apps created with react-native init and published more than 1 year ago for Android and iOS. We are not using codepush, test A/B or others technique to change app behaviour in runtime.
Anyone suffering with the same rejection or have any tips to solve this problem?
Apple rejection message:
Guideline 2.3.1 - Performance
We discovered that your app contains obfuscated code, selector mangling, or features meant to subvert the App Review process by changing this app's concept after approval to the App Store.
The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.
Next Steps
- Review the Performance section of the App Store Review Guidelines.
- Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
- Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.
If you believe your app is compliant with the App Store Review Guidelines, you may submit an appeal. Alternatively, you may provide additional details about your app by replying directly to this message.
package.json's:
App A:
{
"name": "app A",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"@react-native-community/async-storage": "1.2.2",
"@react-native-community/netinfo": "1.4.1",
"@remobile/react-native-action-sheet": "1.0.2",
"eureka-rn-components": "git+file:../gileade-eureka-rn-components#02c50a043070648205def50940c1282d2b749c89",
"functional-masks": "git+https://github.com/ktabriga/functional-masks.git#d5f5f01fe6731fc1c0879b8afb8f239591a2f984",
"lodash": "4.17.2",
"moment": "2.16.0",
"normalizr": "3.1.0",
"numeral": "1.5.3",
"prop-types": "15.6.2",
"ramda": "0.23.0",
"react": "16.8.3",
"react-native": "0.59.3",
"react-native-action-button": "2.6.2",
"react-native-autocomplete-input": "3.6.0",
"react-native-datepicker": "1.6.0",
"react-native-deprecated-custom-components": "0.1.2",
"react-native-device-info": "0.25.1",
"react-native-dropdownalert": "3.9.1",
"react-native-elements": "0.18.0",
"react-native-fcm": "13.3.3",
"react-native-global-props": "1.1.1",
"react-native-image-crop-picker": "0.18.2",
"react-native-infinite-scroll-view": "0.4.5",
"react-native-masked-text": "1.5.2",
"react-native-modal-selector": "1.0.2",
"react-native-permissions": "1.1.1",
"react-native-progress-circle": "2.0.1",
"react-native-side-menu": "1.1.3",
"react-native-simple-modal": "6.0.0",
"react-native-swiper": "1.5.5",
"react-native-vector-icons": "6.2.0",
"react-redux": "4.4.6",
"redux": "3.6.0",
"redux-logger": "2.7.4",
"redux-persist": "4.0.0-beta1",
"redux-promise-middleware": "4.1.0",
"redux-thunk": "2.1.0",
"reselect": "2.5.4",
"string-mask": "0.3.0",
"url-join": "4.0.0"
},
"jest": {
"preset": "jest-react-native"
},
"devDependencies": {
"@babel/core": "7.4.0",
"@babel/runtime": "7.4.2",
"@react-native-community/eslint-config": "0.0.3",
"babel-jest": "24.5.0",
"eslint": "5.16.0",
"jest": "24.5.0",
"metro-react-native-babel-preset": "0.53.1",
"react-test-renderer": "16.8.3"
}
}
Run Code Online (Sandbox Code Playgroud)
App B:
{
"name": "app B",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"@react-native-community/async-storage": "1.3.3",
"axios": "0.18.0",
"bluebird": "3.5.1",
"jwt-decode": "2.2.0",
"moment": "2.21.0",
"prop-types": "15.6.1",
"react": "16.8.3",
"react-native": "0.59.3",
"react-native-charts-wrapper": "0.4.2",
"react-native-datepicker": "1.7.2",
"react-native-device-info": "0.25.1",
"react-native-elements": "0.19.0",
"react-native-exit-app": "1.0.0",
"react-native-fcm": "14.1.0",
"react-native-keyboard-manager": "4.0.13-10",
"react-native-simple-dialogs": "1.1.0",
"react-native-splash-screen": "3.1.1",
"react-native-vector-icons": "6.2.0",
"react-navigation": "1.5.2",
"vanilla-masker": "1.2.0",
"wolfy87-eventemitter": "5.2.5"
},
"devDependencies": {
"@babel/core": "7.4.0",
"@babel/runtime": "7.4.2",
"@react-native-community/eslint-config": "0.0.3",
"babel-jest": "24.5.0",
"babel-plugin-transform-remove-console": "6.9.0",
"eslint": "5.16.0",
"jest": "24.5.0",
"metro-react-native-babel-preset": "0.53.1",
"react-test-renderer": "16.8.3"
},
"jest": {
"preset": "react-native"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 2
我的应用程序也被拒绝了。然而,在解决中心回复后,我表示我不使用代码混淆,并询问了有关拒绝原因的详细信息。就像这样,我收到一条通知,表明我的应用程序正在接受审核,大约 10 秒后我的应用程序获得批准并发布:-)
对我来说,这似乎是苹果方面的一个错误,或者是由流行的框架之一触发的,例如 AFNetworking、Realm 等(它们使用 NSStringFromSelector、NSStringFromClass 等),但由于它规模很大,而且每个人都在解释用法以同样的方式,应用程序几乎自动获得批准(但您必须在解决中心回复才能触发第二次审核流程)。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |