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

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

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

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

Ответы [ 4 ]

10 голосов
/ 19 мая 2012

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

Organizer screenshot

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

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

2 голосов
/ 14 марта 2012

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

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

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

, затем ПОЛУЧИЛ ~

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

1 голос
/ 14 марта 2012

Более подробную информацию о процессе одобрения Apple вы получите по адресу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...