Как распространять iOS-приложение напрямую клиентам в обход App Store

Добрый день! Я занимаюсь разработкой приложения, которое необходимо, ввиду его специфичности и сроков Review в iTunes Connect, распространять напрямую клиентам. На данный момент имеется Apple Developer Program.

Сначала подумал про Ad Hoc — но там при составлении Provisioning profile необходимо указать устройства, на которые потом это приложение встанет. Уже крайне неудобно — я не могу взять устройства клиентов и поочередно их регистрировать в Member Center. Там еще написано, что количество устройств ограничено: «Create a distribution provisioning profile to install your app on a limited number of registered devices», «Select the devices you wish to include in this provisioning profile. To install an app signed with this profile on a device, the device must be included».

Еще есть Enterprise Program. Цена не пугает, пугают отзывы, что таким образом можно распространять приложения только внутри организации (как определяется причастность устройства к организации, не знаю), и при распространении на «кого попало» может обернуться отзывом лицензии.

Пишут и про TestFlight.

Пишут много, но не знаю, что выбрать, да и не знаю, подходит ли мне хоть что-то.

Мне необходимо распространять приложения раз в 2–3 месяца человек на 80–100 (каждый раз пользователи новые). Также хотелось бы не напрягать пользователей скачиванием сторонних программ, регистрацией своих устройств и прочим.

Если все же идеальных вариантов для решения данной проблемы нет, то может кто поделится опытом публикации в App Store частных приложений? Заказчики не хотят, чтобы их приложения скачивали простые зеваки — я думал над выставлением цены $999 (или я не могу поставить такую высокую цену будучи простым Developer?) и рассылать промокоды только «нужным» пользователям. В таком случае, правда, есть ограничение на 100 промокодов, не так ли? И не отвергнут ли на Review приложения вроде «Семейный альбом Петровых» или «Официальное приложение ФК Двор № 4»?


Отвечает Анатолий Шарифулин, руководитель сервиса для мониторинга приложений конкурентов AppFollow

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

По поводу цены — так не стоит делать, проще вести логин-пароль или вход по промокоду.

Если же вы используете в своем приложении что-то такое, что не совместимо c гайдлайнами и/или ваше приложение b2b и вам не нужен «случайный» пользователь, то Enterprise — это решение. Вам нужно будет всего лишь распространять ссылку на приложение потенциальным клиентам, но вам могут отказать в заявке, если у вас, например, нет DUNS-номера организации или вы не доказали, что вам действительно это необходимо.

Мы, например, в Ostrovok.ru в 2013 году легко получили Enterprise-аккаунт, но по факту его не стали использовать на полную мощь.

0
41 комментарий
Написать комментарий...
Anton Azarov

Я делаю очень много приложения на Adobe AIR для клиентов. Платформа - только iOS. Распространяем по ссылке (лично на почту).

Лицензия - Enterprise за 299 в год. С ней в AppStore нельзя (нет такой опции), зато можно ставить на любой девайс без запроса его UDID.

Установка возможно по ссылке. Впрочем, для этого и не нужна Enterprise лицуха. Но в обычной dev лицухе надо узнавать UDID.

Начиная с iOS8 у Apple чешутся яйца на тему "как еще трахнуть разработчика" и они запретили установку приложений "по ссылке" с доментов, где нет https протокола. Т.е. раньше достаточно было иметь http. Потом они скуржопились, что-то промычали про безопасность и разрешили установку только через https. Тут для меня возника любопытный вопрос. Если Enterprise дает возможность ставить кому угодно, а в оферте на Apple Dev написано, что только своим сотрудником за исключением (бла-бла, какие-то там исключения все же есть)... то зачем запрещать установку по http? Выходит, что раздавать аппу через Enterprise как бы нельзя, но можно? :)

Если нет своего https - я советую делать это через dropbox. https бесплатно с возможностью давать на установку прямые ссылки и потерать руки от удовлетворя работающего продукта.

1) идем на dropbox, кидаем туда index.html, iTunesArtwork.png (512x512), x72.png (72x72), myApplication.plist, myApplication.ipa

2) к каждому файлу получаем share ссылку вида https://www.dropbox.com/s/v7ds0asd78ds/myApplication.plist?dl=0

3) в кажой ссылке меняем https://www.dropbox.com на https://dl.dropboxusercontent.com и в конце убираем ?dl=0

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

4) Создаем в нашем myApplication.plist контент как у меня по ссылке https://gist.github.com/therabbitwindfall/4a522a480ab2c5f97d33

5) прописываем в нем правильные ссылки, которые мы получили в шаге 2 и 3

6) где-то на удобном нашем сервере мы создаем myApp.html и в нем делаем редирект на наш index.html из шага 2

7) клиентам раздаем ссылку с шага 6. Можно и с шага 2, но ссылка вида myapp.com/myApp.html куда круче, чем https://dl.dropboxusercontent.com/s/sdf87sd78fsdff/index.html

Клиент открывает её прямо в браузере мобильного iOS устройства и всем хорошо :) А главное, что такая схема у меня работает уже года 3.5 точно.

Apple конечно же знает, что, где и как запускалось. Но это в любом случае случается, т.к. при подключении iOS устройства через прокси - мы видим, что даже при запуске апловских прог встроенных девайс что-то пуляет к ним на сервер.

Ответить
Развернуть ветку
Anton Azarov

Забыл главное дописать!

8) В index.html с дропбокса (хотя можно и со своего домена) прописываем a href ссылку вида

itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/vbc89brzlgh/myApplication.plist

iOS именно такую ссылку подсасывает и начинает установку. Но, сначала, спросит доверяет ли девайс этому производителю ПО :)

Ответить
Развернуть ветку
Basilio Alexandrov

Спасибо за подробную инструкцию - это именно то, чего я ждал. Но осталось несколько вопросов:

1) Первый просто из любопытства: зачем загружать иконки на страницу? Разве браузер ее откроет до того, как выскочит alert типа "вы хотите установить это приложение"?

2) Насколько сложно получить enterprise? С ИП это возможно? Просто в рунете почти нет статей на этот счет, а иностранные, в данном случае, не совсем релевантны.

3) "Распространять для своих сотрудников" - это везде написано, но что в действительности за этим стоит? Или это можно пропустить мимо ушей и приравнять своих клиентов к своим сотрудникам? Или могут быть какие-то штрафы?

Ответить
Развернуть ветку
Anton Azarov

нчз )

1) иконки нужны в plist для того, чтоб юзер видел не белую иконку, а иконку продукта во время скачивания. Т.е. сначала скачивается иконка и потом начинает скачиваться приложение. Плюс всегда можно в index.html кинуть красиво кнопку с иконкой и подписью Press to Install. В разы повышает серьезность подхода в глазах клиентов

2) Enterprise мы получили за неделю. Для этого получили DUNS номер. Получили его совершенно бесплатно. Но получал его мой руководитель. Помню, что фигурировала эта ссылка http://www.dnb.ru/rbr.asp?rbr=25

3) Понятия не имею, что за этим стоит. За много лет небыло проблем еще. У нас в соглашении везде написано, что установив приложение Вы становитесь членом команды разработчиков данного ПО и обязуетесь сохранять конф. об его использовании :)

Ответить
Развернуть ветку
Basilio Alexandrov

Да, я внимательнее посмотрел plist, и вопрос про иконки отпал.

Но вы как ООО получали? Только DUNS номер запросили или еще и кредитный рейтинг? Спрашиваю про получение программы, потому что не раз читал про то, как долго и муторно получать обычную dev programm для организаций.

Вы таким образом уже более 3 лет распространяете, и ни разу никаких сообщений от apple не было? А какой у вас, примерно, объем загрузок в год? Или я слишком парюсь, и количество загрузок (до миллиона) никогда не привлечет внимание? Я все опасаюсь, что придет письмо счастья, где будет говориться, что как-то подозрительно у меня много "сотрудников", и по этой причине принято решение приостановить действие enterprise. Просто это может сильно ударить, если не быть готовым к переустройству приложения для распространения другим способом.

И еще вопрос: а про какое соглашение с пользователями Вы говорите? Или оно стандартное и принимается пользователем, установившем приложение заархивированное как enterprise distribution?

Ответить
Развернуть ветку
Anton Azarov

Сегодня говорил с человеком, кто его получал (у нас). Сказал, что заполнил что-то на сайте (я давал его) и потом эти данные в программе Apple Enterprise ввели и все. Уверен, что всё очень просто.

Ничего от Apple не приходило и я сомневаюсь, что это изменится. В мире миллионы приложений. Как они их отслеживать будут? Даже при всем желании - как они узнают является ли запустивший приложение человек сотрудником компании или нет?
Коммерческая информация наверняка :)

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

Я Вам больше скажу. Есть такая CRM система как Veeva Systems и у них распространение приватной системы под айпад идет через их сайт.
Наверняка Apple про это знают и вот уже года 4 прошло с момента начала сотрудничества с ними - ничего не изменилось.

Соглашение - это то, мы суем пользователю перед скачиванием и первым запуском. Это исключительно наше соглашение и пользователя и его мы делаем по ряду причин, не связанных с Apple и их Enterprise программой. У нас просто обслуживаются клиенты известные и не очень хотелось бы, что две различные организации узнали, что мы для их конкуретнов делаем контент. Ничего опасного, просто будут тыкать носом "наверняка для Рога и Копыта Вы лучше сделали, чем для нас" :) Но на перестраховку мы написали, что человек стал членом компанды разработчиков и бла бла бла соглашается присылать отчеты с ошибками и т.д.

Думаю, что делайте и не парьтесь. Можете и меня подключать в качестве фриланса под планшеты что-то делать :) Но только не большое что-то...

Ответить
Развернуть ветку
Basilio Alexandrov

Еще раз спасибо за информацию, которой в рунете нет. Понимаю, что уже мог утомить своими вопросами, но осталось еще несколько, связанных с регистрацией. Сколько раз и каким способом apple связывался с ООО? (с Вашим юрлицом)

Просто мы сейчас думаем над тем, что для быстрого запуска нам было бы удобнее получить DUNS для одного из ООО наших знакомых ( ОКВЕД ведь не должен стать преградой - все могут делать обучающие приложения для "сотрудников"), но встает вопрос - надо ли нам постоянно, во время регистрации в enterprise, быть доступным по заявленным контактам ООО наших знакомых? На американских сайтах пишут, что apple будет звонить по телефону из DUNS и спрашивать: понимаем ли мы для чего приобретается enterprise, и что мы будем распространять своим сотрудникам.

Ведь, по сути, нет разницы на кого регистрировать enterprise - главное иметь доступ к почте и знать пароль от apple id. Пусть хоть ООО"Заборы для дачи СПБ" будет. Или я не прав?

Ответить
Развернуть ветку
Basilio Alexandrov

И требовал ли apple подтверждения личности при регистрации в enterprise?

Ответить
Развернуть ветку
Fucking Zyrg

Resign + база айдишников устройств + скрипт + рассылка. Но это мутно както на эпле колхозом заниматься. Тестфлайт решает

Ответить
Развернуть ветку
Basilio Alexandrov

А что именно он решает? Ведь у пользователей он должен быть загружен, не так ли?

Ответить
Развернуть ветку
Fucking Zyrg

Можно подписать самому и отправить пользователю его личный Ipa. Нооо надо знать айди его айфона, что некошерно видимо при ваших условиях.

Ответить
Развернуть ветку
Iscander Vakil

Pgyer.com
Шах и мат.

Ответить
Развернуть ветку
Basilio Alexandrov

Можешь поподробнее рассказать? Какие там есть ограничения, с какими проблемами можно столкнуться?

Ответить
Развернуть ветку
Виталий Кривошапкин

Можете добавить в TestFlight ваших клиентов в качестве тестеров. Ограничение количества тестеров: 1000 людей с apple аккаунтами.

Ответить
Развернуть ветку
Basilio Alexandrov

Ну это моветон какой-то: собрать с пользователей данные их учеток, а потом заставить установить testflight. Выглядит так себе, если честно. Хочется отправить ссылку, нажав на которую им предлагается установить приложение. Собирать перед этим базу данных udid или учеток просто нет не только возможности но и желания - хочется все сделать удобно для пользователя

Ответить
Развернуть ветку
Yan Yanov

На этом примере можно чётко видеть какое гавно сотворил Стив Жлобс.
Меня реально выбешивает этот Аппстор и Эпл на который все дрочат.
Начиная с дизайна их девелопер консоли - разрабатывал видимо студент.
Вы не можете загрузить файл в этот гребаный Аппстор ни с какой операционки кроме как с Мака!!!!
Это ж писец полный!
Тестфлай говорите?
Там такие случаи - его можно установить только на 8 и выше, но много пользователей, которые купили "нищебродские айфоны" с 16гигами и они тупо не могут сделать апгрейд, который требует 1гига свободной памяти, т.е. в этом гребаном эпле надо постоянно снимать носки.

И это мы не говорим о том что этот сраный Эпл тупо запрещает платежи в приложениях не через них. Пейпал? Нет! Карта? Нет! Только через нас и бы будем брать за это 30%.
Этот гребанный эпл забирает 30%!!!

Я не могу спокойно говорить про Аппстор и Эпл, это просто пи..ц.

И это гавно творит самая дорогая компания в мире!!!!!

Мы со своим приложением прошли этот квест в Аппсторе и теперь мы там, но я всегда буду говорить - Аппстор и Эпл-гавно!

Их ждёт участь Нокии, если они не изменятся.

Ответить
Развернуть ветку
Валерий Балашенко

Ты ещё вспомни как геморойно регистрацию проходить)
А вообще - смирись, сходи перекури и всё устаканится.
Все через это прошли и живы здоровы и платим 30% )

Ответить
Развернуть ветку
Виталий Кривошапкин

Parse - удобно для тех, кто не хочет заморачиваться с сервереыми проблемами: где арендовать, какой мощности ставить сервакам, внедрение sharding, увеличение мощности серверов по мере необходимости, поддержка серверов и т.д. - все берет на себя Parse.
Ваша задача: сделать на нем свою БД и юзать. Есть API для обращения к базе, или можно сразу по SDK стучаться к БД. Есть CloudCode - для операций на стороне сервера.
В общем, просто попробуйте и сами решите, нужно ли вам и для вашего приложения.

Ответить
Развернуть ветку
Ivan Bilash

А почему в какой-то приватный стор нельзя залить?

Ответить
Развернуть ветку
Basilio Alexandrov

Можно по подробнее? А какие сертификаты прописывать в приложении, чтобы они нормально вставали на устройства, будучи загруженными не через appstore?

Ответить
Развернуть ветку
Ivan Bilash

Все так же, как для апп-стора, обычный провижн. Или я неверно понял вопрос?

Ответить
Развернуть ветку
Basilio Alexandrov

Я не совсем правильно сформулировал. Архивировать под что: appstore, Adhoc, enterprise?

Ответить
Развернуть ветку
Ivan Bilash

Немного поспешил - Distribution (последнему верить)

Ответить
Развернуть ветку
Basilio Alexandrov

Правильно ли я понял:

1) в code signing приложения прописываем distribution

2) Архивируем для appstore

3) Выкладываем на свой сайт вместе с plist (или он и не нужен?)

4) Кидаем пользователю url

Непонятно: какая учетка должна быть у пользователя? Нужно ли где-то прописывать udid?

Ответить
Развернуть ветку
Ivan Bilash

1. Да
2. Да
3. Ну условно свой, у нас он свой, например.
4. Да, линк для установки - он устанавливает и все. Трекаем установки через goo.gl :)

По сути, наш сервис - это корпоративный стор с плюшками. Вот :)

Ответить
Развернуть ветку
Basilio Alexandrov

Все так хорошо описано, но остаются сомнения. А зачем тогда ad hoc и enterprise (по которому мне еще нужен ликбез) существуют? Я думал, что айфон просто откажется устанавливать приложение не из appstore без этих сертификатов

Ответить
Развернуть ветку
Sergey Ovseenko

Вот вот... Я тоже что-то не пойму что к чему. Подробно распиши последовательность действий плиз. Простой чел по ссылке на *ipa фаил не сможет его установить 100%

Ответить
Развернуть ветку
Ivan Bilash

Я не знаю, зачем они существуют :) я просто описал решение, которым пользуемся мы и с помощью которого дистрибютим приложения для своих клиентов. Можем попробовать так - пробуете демо-ипа собрать, подписанное distibution, а я пока попробую договориться эту аппу у нас разместить - заодно и проверим сомнения, если что.
Обещать не буду - но договориться попробую :)

Ответить
Развернуть ветку
Ivan Bilash

Appstore

Ответить
Развернуть ветку
Basilio Alexandrov

Ок. Заархивировал приложение для стора. Выложил на сайт вместе с plist и все? Любой сможет скачать?

Ответить
Развернуть ветку
Ivan Bilash

Не любой. Либо тот кто знает url и имеет учетку, либо тот кому провайдер - отправит share-link - по которой будет доступен апп для скачивания.

Ответить
Развернуть ветку
Sergey Ovseenko

Ахаха) Это тебе не андроид 😂

Ответить
Развернуть ветку
Ivan Bilash

Хз, мы провайдим много приложений разного вида сложности, и давным-давно написали для себя сервис. Ему уже лет 5, вот чтоб не соврать :). Я че-т даже не думал, что это проблема для кого-то.
Для клиентов, для QA, что для Андроида, что для ОСи, а когда и свободное время было - прикрутили inappupdate и mdm для ОСи только, правда.

Ответить
Развернуть ветку
Basilio Alexandrov

Может кто-нибудь развеять опасения про enterprise - присвоив приложению этот сертификат, я могу его отправить кому угодно? Нет ограничений по количеству устройств или по количеству рассылаемых программ? И никто не проверяет их содержание, никто не может на них пожаловаться, что приведет к отзыву лицензии? Допустим, делаю фотоальбому для выпускников богатых школ Москвы - 10-ки приложений и у каждого по 50 пользователей. Для этого будет достаточно enterprise?

Ответить
Развернуть ветку
Fucking Zyrg

Popcorn так распростаняется, говорят мильон загрузок) может сертификаты меняют, может эплу всё равно.

Ответить
Развернуть ветку
Basilio Alexandrov

А знакомых с действующим enterprise нет? Очень хотелось бы обсудить возможности этой программы

Ответить
Развернуть ветку
Виталий Кривошапкин

Вопрос: Клиенты в вашем городе находятся? Или в вашей стране?
Если локально, то можете поднять им локальный сервак, с помощью которого и будет работать ваша программа.
И смело отправить приложение на общий стор. А если кто другой скачает, то у него не будет того сервака, и соответственно, не будет иметь доступа к всему фукнционалу приложения.
А чтобы прошла ревью Apple, мы на своем подобном сделали так: если приложение не нашел сервак, то включает демо версию, где есть только основные функции приложения, как триал.

Ответить
Развернуть ветку
Basilio Alexandrov

Пока что остановились на том, чтобы загрузить в appstore "пустое" приложение, которое только при вводе определенного пароля на первой странице загружает контент. Да, придется для review дать этот пароль, но случайных пользователей это должно отбить. А потом, если приложение универсальное и будет заказываться разными клиентами (фк двор23, фк двор38,...) - давать клиентам новые пароли ( клиентам А давать пароль 111, который загружает контент А, а клиентам Б - пароль 222...). Хотя это усложняет разработку, потому что до этого никогда не занимался синхронизацией приложения с сервером. Может есть какие-нибудь сервисы, занимающиеся синхронизацией с приложением?

Ответить
Развернуть ветку
Виталий Кривошапкин

Сервисов много, например, Parse

Ответить
Развернуть ветку
Basilio Alexandrov

Вот как раз про него и думал расспросить, потому что уже приглядывался. Пользовался? Удобно? На первый взгляд, как раз для тех, кто не привык синхронизировать с сервером.

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Anton Azarov

Модеры, прикрутите кнопку "редактировать" к постам в течении 5 минут. Дочка разлила воду на клавиатуру и при нажатии кнопок печатаются другие :)

Ответить
Развернуть ветку
38 комментариев
Раскрывать всегда