Публикация приложения в Marketplace
Вчера в Microsoft Marketplace появилось мое первое приложение — Great Advice. За недолгое время работы над этим проектом, я сделал несколько наблюдений, который могут быть полезны тем, кто тоже пишет свое первое приложение для Windows Phone 7.
Исходные данные в моем случае следующие. Опыт программирования около трех лет. Рабочая машина MacBook Pro 13'', i5, 4 Гб ОЗУ. Начнем с очевидного. Чтобы начать разработку нужен SDK. Windows Phone 7 SDK бесплатен для всех. Кроме того есть Visual Studio Express, которая также бесплатна. Политика Microsoft в этом вопросе совпадает с политикой других игроков рынка мобильных платформ: средства разработчика не стоят денег и доступны для загрузки.
SDK доступен только для Windows. Я не хотел отказываться от привычного окружения Mac OS, поэтому решил установить Windows на виртуальную машину от Parallels. Parallels предлагает создать ВМ с Windows 8, среди прочего. Идея показалась мне интересно. Студия и набор для разработчика заработали. Но не заработал эмулятор. Я решил, что дело в бета-версии Windows 8 и прекратил эксперимент, установив Windows 7.
Windows 7 хорошо работает на Parallels. Студия тоже. С эмулятором снова вышла промашка. Он не запускался. Я начал искать в Сети возможные причины. Среди прочего, нашел официальный ответ Parallels, который звучал приблизительно так: нет причин, чтобы эмулятор Windows Phone 7 не работал, но может не хватать памяти. В требованиях к эмулятору сказано, что для работы ему нужен DirectX 11. По умолчанию для ВМ отведен 1 Гб ОЗУ. Попытка поставить больше двух приводит к сообщению от Parallels, что это не самая удачная идея. Так что я поставил 1,5 Гб. После этого эмулятор запустился. И мне даже удалось запустить в нем приложение из пустого шаблона. Но все это настолько медленно, что работать нельзя. Мне пришлось поставить Windows с помощью Boot Camp. Когда Windows поселилась в отдельном разделе диска и имела прямой доступ к ресурсам, эмулятор заработал хорошо. Но я все еще удивлен его аппетитами.
Порог вхождения очень невысокий. Я не знал C#, не знал ничего об SDK. Но всего за три вечера сделал этот простой клиент. Общее затраченное время на разработку около 6 часов. Оформление лицензии разработчика во много раз проще, чем в Apple. Все быстро и понятно. Стоит, кстати, тоже 99$. Но посылать факс не нужно. Я очень признателен Microsoft за то, что я чувствовал себя равноправным, а не как в Apple, будто я оправдываюсь и доказываю свою пригодность. Получение лицензии заняло часы. Кстати, для студентов есть специальная программа DreamSpark. По ней можно получить лицензию разработчика бесплатно.
Нужна была задача. Я решил написать клиент для сайта Fucking Great Advice. В самом проекте нет ничего интересного. А вот в его публикации есть.
Когда я сделал первую версию, которая работала на эмуляторе (устройства у меня нет), я захотел дать ее товарищам, чтобы они смогли поиграть с ней. В портале для разработчика есть чудесная возможность сделать рассылку бета-версии своей программы ста людям. От этих людей нужен их Live ID, который они используют для входа в Zune. Этот же Live ID они должны использовать и с телефоном. Никакие идентификаторы устройств не нужны. Публикация беты мало чем отличается от публикации настоящего приложения. Я заполнил все поля и стал ждать. Было сказано, что процесс займет несколько часов. В самом деле, часа через три мне пришло письмо, где говорилось, что моя бета доступна, и я могу разослать тестировщикам ссылку. Ссылка шла далее и имела формат zune://navigate?appid=некий-длинный-идентификатор. Я на радостях разослал ее и что же? Никто не смог ее открыть. Ни под одной ОС и ни одним из браузеров. На форумах разработчиков писали, что нужно подождать. Может пройти еще несколько часов прежде, чем бета станет доступна для скачивания. Через четыре часа я не вытерпел и решил еще поискать причины. Оказалось, что ссылка, которая начинается на zune:// может не открываться даже у тех, у кого есть Zune. Что делать? Нужно заменить ссылку zune://navigate?appid=your-app-id на http://windowsphone.com/s?appid=your-app-id. По ссылке с таким форматом скачать смогли все.
Вернемся немного назад. При отправке беты среди прочего требуется указать App Name For App Hub. Я не знал точно, что это, поэтому ввел Great Advice. Это было ошибкой. Когда я уже закончил приложение и хотел выпустить его в Marketplace, оказалось, что я не могу использовать имя Great Advice, оно уже занято для беты. Я не могу отозвать бету. Она будет видна у меня в Dashboard 90 дней. Это мне подтвердили в Microsoft, куда я в порыве негодования послал запрос. Более того, нельзя сделать update для беты. Только послать новую. Я вывел для себя следующее правило: бета версию лучше называть по формату «appName Beta appVersion». Хорошая новость в том, что указанное имя — это не имя приложения в Marketplace. Это то имя, под который разработчик видит его у себя в Dashboard. Но все равно неприятно.
Без устройства разрабатывать можно, но не очень удобно. Женя Гаврин получил исходники почтой и нашел важную ошибку, приводившую к падению приложения на устройстве. На эмуляторе я ее не видел. С его помощью я также упросил систему запросов к серверу. Боря Седов нарисовал иконки. Причем терпеливо выслушал все мои замечания и в итоге сделал вариант, который я считаю очень удачным. Приложение дозрело.
Прежде, чем отправиться на выпускной бал, неплохо пройти тесты, встроенные прямо в Студию. Искать Test Kit нужно в меню Project. Прохождение почти всех тестов требует наличие устройства с Windows Phone 7. Но отображение иконок вы можете проверить и без него.
Я отправил приложение в Marketplace. По пути узнал, что Россия по мнению Microsoft относится к категории «Asia, Africa & Pacific». И сделал открытие об имени приложения, которое описал выше. И тут я сделал другую ошибку. Нужно было выбрать регионы, в которых будет доступно приложение. По умолчанию включены галочки для США и Канады. В моем приложении все было по-русски. Но даже если бы я снял все галочки, кроме России, это бы меня не спасло. При отправке слева сверху была незаметная надпись «Language English». Я не понял, к чему она. И с первой попытки приложение не прошло проверку из-за того, что была заявлена поддержка английского, которой не было. Ошибку я понял, едва отправил приложение. Но после того, как пройдены все пункты и сделана отправка, отозвать приложение как будто нельзя. Я видел кнопку отмены процедуры отправки, когда пройдены не все шаги. Потом этой кнопки я не видел. Открыл проект, нашел, где нужно поменять язык по умолчанию. Выставил русский. Когда пришел отказ, я повторил процедуру. В этот раз таинственная надпись в углу уже гласила «Language Russian».
Сколько заняла проверка? Три рабочих дня. Во вторник утром я отправил приложение. В пятницу утром пришло уведомление, что приложение успешно прошло проверку и доступно в Marketplace. Это верно только отчасти. Прямой ссылки нет, а поиск не находил приложение. Прошло еще восемь часов до момента, когда веб-поиск на сайте Marketplace проиндексировал мое приложение, и его смогли найти и установить другие. Замечу, что в то время, когда веб-поиск уже находил приложение, поиск с устройства все еще выдавал печальное «нет результатов».
С иконками мы немного ошиблись. Надо было сделать их немного иначе. На устройстве все выглядит отлично. А в Marketplace нет. Поправим в следующей версии. В остальном же опыт считаю успешным.
Комментарии
@noendread
Спасибо, полезно.
Александр Черный
Спасибо, старался.