Пользовательские элементы управления камерой iPhone (без использования UIImagePickerController)
Вопрос
Я понимаю, что для того, чтобы приложение для iPhone было принято в App Store, необходимо использовать только документированные библиотеки.
Если это так, то как некоторые приложения, такие как «Night Camera» и «Camera Plus», используют элемент управления камерой, который кажется чем-то отличным от того, который содержится в UIImagePickerController?
Я слышал о некоторых случаях, когда разработчику предоставлялся «специальный» доступ к определенным заголовкам, которые позволяли использовать функции, которые в противном случае были бы невозможны, если бы он был ограничен использованием только документированных библиотек.Однако, учитывая, насколько непрозрачен процесс выбора приложений для App Store, я бы предпочел придерживаться рекомендованного, а не рисковать.
Кто-нибудь хочет пролить больше света на это?
Решение
Возможно, вы захотите проверить дамп классов заголовков частной платформы Apple.Запустите этот Perl-скрипт:
http://arstechnica.com/apple/news/2008/11/dumping-the-iphone-2-2-frameworks.ars
и перейдите в каталог PhotoLibrary в PrivateFrameworks.Некоторые из представленных здесь классов выглядят довольно многообещающе для прямого доступа к камере.
Использование недокументированного API может снизить ваши шансы пройти через магазин приложений, но все это очень субъективно — если ваш продукт хорош, Apple, вероятно, пропустит его.Я бы порекомендовал подружиться с евангелистом-разработчиком в Apple.
Другие советы
Вы видели это обсуждение?
http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/
и этот пример кода для пользовательского средства выбора?
http://www.codza.com/custom-uiimagepickercontroller-camera-view
Надеюсь, поможет.
UIImagePickerController — это подкласс UIViewController, который управляет иерархией представлений.Вы можете свободно экспериментировать с иерархией представлений, как и эти приложения, но это рискованно, учитывая, что Apple не документирует ее и может изменить ее при любом обновлении ОС.
Я не слышал, чтобы кому-то предоставлялся специальный доступ к библиотекам, но я читал, что существует небольшое различие между недокументированными классами и методами и частными фреймворками.Недокументированные классы — это серая зона, но частные фреймворки определенно не допускаются.
Простое объяснение заключается в том, что приложения в магазине не должны использовать неподдерживаемые API, но это не проверяется постоянно.Упомянутые вами приложения либо используют неподдерживаемые функции/классы/методы, либо играют с иерархией представлений, которая сама по себе недокументирована, хотя это можно сделать с помощью стандартных API.
Вы могли бы сделать то, что они делают, и рискнуть.Просто помните о рисках.Ваше приложение может (а) быть отклонено из магазина, (б) быть принято, но позже загружено (это произошло из-за неподдерживаемого использования API), (в) быть принято и не загружено, но сломаться, когда Apple в следующий раз выпустит новое обновление программного обеспечения iPhone. (поскольку неподдерживаемые API или иерархии представлений могут измениться без предупреждения).Или вам может повезти, и ничего этого не произойдет.