Пользовательские элементы управления камерой iPhone (без использования UIImagePickerController) - PullRequest
13 голосов
/ 18 февраля 2009

Хотя я понимаю, что для того, чтобы приложение iPhone было принято в App Store, одно требование - использовать только документированные библиотеки.

Если это так, то как некоторые приложения, такие как «Ночная камера» и «Камера плюс», используют элемент управления камерой, который выглядит не так, как в UIImagePickerController?

Я слышал о некоторых случаях, когда разработчику был предоставлен «специальный» доступ к определенным заголовкам, которые допускают функции, которые в противном случае были бы невозможны, если бы они ограничивались только использованием документированных библиотек. Однако, учитывая непрозрачность процесса выбора приложений для App Store, я бы предпочел придерживаться того, что рекомендуется, а не рисковать.

Кто-нибудь хочет пролить свет на это?

Ответы [ 4 ]

8 голосов
/ 26 марта 2009

Вы видели это предположение?

http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/

а этот пример кода для пользовательского выбора?

http://www.codza.com/custom-uiimagepickercontroller-camera-view

надеюсь, это поможет.

6 голосов
/ 18 февраля 2009

Возможно, вы захотите проверить classdump заголовков закрытого фреймворка Apple. Запустите этот Perl-скрипт:

http://arstechnica.com/apple/news/2008/11/dumping-the-iphone-2-2-frameworks.ars

и перейдите в каталог PhotoLibrary в PrivateFrameworks. Некоторые из классов здесь выглядят довольно многообещающими для прямого доступа к камере.

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

1 голос
/ 18 февраля 2009

UIImagePickerController является подклассом UIViewController, который управляет иерархией представления. Вы можете свободно работать с иерархией представлений, как и эти приложения, но это рискованно, учитывая, что Apple не документирует это и может изменить его при любом обновлении ОС.

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

0 голосов
/ 18 февраля 2009

Простое объяснение состоит в том, что приложения в магазине не должны использовать неподдерживаемые API, но это не проверяется последовательно. Упомянутые вами приложения либо используют неподдерживаемые функции / классы / методы, либо играют с иерархией представлений, которая сама по себе недокументирована, даже если это можно сделать с помощью стандартных API.

Вы могли бы делать то, что они делают, и рисковать с этим. Просто знайте о рисках. Ваше приложение может (а) быть отклонено из магазина, (б) быть принято, но позже загружено (это произошло для неподдерживаемого использования API), (в) быть принято и не загружено, но прекратит работу в следующий раз, когда Apple выпустит новое обновление программного обеспечения iPhone (поскольку неподдерживаемые API или иерархии представления могут изменяться без предупреждения). Или вам повезет, и ничего этого не произойдет.

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