Вопрос: Расширение iOS и ограниченный API


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

Мой вопрос: будет ли отклонено приложение, если я буду хранить ссылки на API, такие как UIApplication.sharedApplication без фактического вызова их (установка «Требовать только API для расширения приложений - расширение»), или мне нужно полностью удалить любые ссылки из кода (т. е. использовать #ifdef)?


4


источник


Ответы:


Да, он будет отклонен, даже если он ссылается на ограниченные API. Мы проводим один и тот же процесс для удаления таких вызовов в нашей системе, альтернативно, у вас могут быть две цели для вашей инфраструктуры, одна безопасная для одного и одна, а не с защитой #ifdef.

Apple docs: ( https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html )

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


3



Обновление для iOS 9 : Apple удаляет доступ к недействительным фреймворкам для определенных целей, поэтому вы не сможете ссылаться на недоступные API независимо от них и должны будете следить за тем, что утверждает принятый ответ.

- Оригинальный ответ -

Если это не огромные неудобства, вероятно, лучше всего #ifdef вокруг ссылок. Это сделает ваш код более совместимым с Outlook в случае, когда Apple решает в будущем разбить компиляцию, если ваше расширение ссылается на ограниченный API (как и при попытке получить UUID устройства).

Кроме того, это сделает вашу структуру пригодной для использования в других сценариях, где у вас может не быть доступа UIKit, например, в OS X.


-3