Apple 在升级到 React Native 0.59 后拒绝了二进制文件(2.3.1 - 性能)

Apple rejected the binary (2.3.1 - Performance) after upgrading to React Native 0.59

升级到 React Native 0.59.3 后,我在不同的帐户中有两个应用程序,在主题 2.3.1 - Performance 下被拒绝。除了 RN 升级外,此应用程序没有任何变化。

但是,这两个应用都没有使用混淆代码、选择器重整或旨在破坏应用审核流程的功能。这两个应用程序都会根据 API 数据自然地更改其内容,就像 Facebook、Twitter、Instagram 等许多其他应用程序一样

这两个都是使用 react-native init 创建的简单应用程序,并在 1 年多前为 Android 和 iOS 发布。我们没有使用代码推送、测试 A/B 或其他技术在运行时更改应用程序行为。

有人遇到同样的拒绝或有解决此问题的建议吗?

Apple 拒绝消息:

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的:

应用程序 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"
  }
}

应用程序 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"
    }
}

我的应用也被拒绝了。但是在解决中心回复后说我不使用代码混淆,并详细询问了拒绝的原因。就这样,我收到了一条通知,说我的应用程序正在接受审核,大约 10 秒后我的应用程序就获得批准并发布了:-)

对我来说,这似乎是 Apple 方面的一个错误,或者它是由一种流行的框架触发的,例如 AFNetworking、Realm 等(他们在其中使用 NSStringFromSelector、NSStringFromClass 等),但由于它的规模很大并且每个人都在解释使用方式,就像应用程序几乎自动获得批准一样(但您必须在解决中心回复才能触发第二次审核流程)。希望这有帮助。