Как проверить, использует ли код вашего приложения iOS API, который не разрешен в магазине приложений?

Я знаю, что есть некоторые ограниченные API или код, которые не могут быть в вашем приложении, когда вы отправляете его в магазин приложений.

Откуда ты знаешь, кто они? Есть ли способ проверить ваше приложение перед отправкой, чтобы убедиться, что вы не использовали такие API-интерфейсы?

Вероятно, лучше избежать этой проблемы на этапе проектирования, чем пытаться исправить ее позже, поэтому мне было интересно, есть ли какой-либо инструмент в XCode или документ для определения этого.

4 ответа

Решение

Apple намерена сделать это, используя функцию проверки XCode. Когда вы отправляете приложение, вы создаете для достижения (или Архив из меню XCode). Затем вы открываете Организатор, чтобы увидеть архив, который вы только что создали. На этом этапе вы можете нажать кнопку " Подтвердить" в Организаторе. Это выполнит проверку без фактической отправки приложения. Он скажет вам, если вы используете частные API. В зависимости от того, как вы их используете, он может определить, что является нарушением:

Скриншот организатора

Определенно есть способы, которыми код может обмануть этот этап проверки и "уйти" с использованием Private API, пока рецензент не посмотрит на пакет. Но, насколько я знаю, все эти способы были бы преднамеренными методами скрытия использования Private API, и похоже, что вы пытаетесь обнаружить случайное использование.

Если вы провалите этот проверочный тест, вы можете использовать что-то вроде AppScanner, упомянутое в ответе Алана Дункана. Но для полноты картины я хотел убедиться, что люди знают, что этот шаг проверки доступен в XCode, и проверка на использование частного API - это одна из вещей, которую он делает перед отправкой (и нужно подождать несколько дней, чтобы узнать, что вы сделал не так). Кроме того, даже если вы не используете кнопку " Подтвердить" в Организаторе, а просто используете " Отправить", инструмент выполняет проверку для вас. Разница лишь в том, действительно ли пакет загружен в iTunes Connect.

Если вы придерживаетесь документированных интерфейсов, как предложено выше, у вас все в порядке. Единственная проблема связана со сторонними библиотеками, реализация которых может быть непрозрачной для вас.

Существует приложение Mac под названием AppScanner, которое сканирует с использованием частного API. У меня нет опыта с этим, хотя.

  1. получить приватный список API.
  2. используйте class-dump для обработки файла Mach-O и получения обработанной строки.
  3. используйте regex, чтобы получить интерфейс, класс или метод в строке.
  4. сопоставьте API с частным списком API.

тогда получил ~

Я открыл тему, чтобы сделать это, но потому что причина моей компании, отменили. очень извиняюсь за это.

Вы получите больше информации о процессе одобрения Apple от

Другие вопросы по тегам