Как непрограммист создал своё мобильное приложение

в 10:36, , рубрики: .net, app, mobile development, vb.net, Visual Studio, Windows Phone 8.1, мобильные приложения, Программирование

Привет!

Хочу поделиться историей, как я, непрограммист, смог написать своё первое мобильное приложение благодаря (или вопреки ему) MS Visual Studio 2013 и даже опубликовать его в магазине Windows Phone. Прошу учесть читателей, что я максимально неопытный непрограммист, который мало что умеет в этой области, поэтому если я решал какие-то проблемы не так изящно, как их можно было бы решить, то особо не глумитесь – это мой первый опыт в подобном деле.

Началось всё с того, что, учась на курсе Cyber Security в Таллиннском Техническом Университете я прослушал курс VB.NET в рамках работы с Windows Forms. Затем где-то случайно прочитал, что MS Visual Studio 2013 позволяет создавать мобильные приложения не только на каком-нибудь загадочном для меня C# или Java, а ещё и на VB.NET.

«Вот это шанс – так я же мегаспец в VB.NET» – подумалось мне тогда. Срочно воспользовавшись студенческой лицензией, я скачал себе MS Visual Studio 2013 и преступил к таинству созданию своего первого приложения.

На курсе нам рассказывали, что самое главное не скилл, а идея. Скилловых программистов много, а успешных приложений мало. Тот же Rovio несколько раз был банкротом и выпустил сотню никому не нужных игр, пока не дошёл до Angry Birds. Вот тут у меня всё было в порядке — скиллов ноль (как потом выяснилось), зато давно была идея. Идея проста – как Flappy Bird.

Итак, я открыл MS Visual Studio 2013 – New Project – Visual Basic — Store Apps – Windows Phone – Balnk App (Windows Phone).

Вот тут я совершил первую свою ошибку, позже поясню в чём она заключалась.

Передо мной открылся эмулятор телефона с непонятным кодом сбоку, и страница с кодом похожим на VB.NET. Ок – дальше что? Это не похоже на Forms, что-то тут не так надо почитать мануалы. Как оказалась у Microsoft создана широчайшая база знаний для поддержки разработчиков: подробнейшие видеоуроки и письменные мануалы, от начинающих до профессионалов.

На этих курсах всё в деталях расписано от того как установить кнопку до того, как обращаться в облако и хранить там базы данных. Тут Microsoft от меня большой респект, даже я разобрался – отлично отнеслись к своим разработчикам, видно, что это для них важно. Начал смотреть, читать – стало приходить понимание как это всё работает, а также понимание, что это не Windows Forms и надо начинать учиться заново. Лектор в видеоуроках отлично рассказывал и подробно описывал все действия для… С# (упс, пичалька). Но мне этого хватило, чтобы понять концепцию и создать пару страничек с переходами в моём приложении.

Дальше начался кошмар! Куча команд, к которым я привык просто не существовали в VB.NET для Windows Phone, они были заменены на альтернативные! Microsoft, really?

Мне пришлось с нуля учить весь синтаксис и разделять в голове один VB.NET и другой VB.NET, но для Windows Phone. Например, в VB.NET есть команда для определения/задания координат объекта в пространстве. В Windows Forms она такая:

Image.Left=100 //задаём
i=Image.Left //определяем

В Windows Phone:

Canvas.SetLeft(Image, i) //задаём
Canvas.GetLeft(Image) //определяем

image

Неопытному непрограммисту очень сложно сходу понять, почему его Image.Left=100 не работает, ведь всё же правильно. В итоге тратишь время, порой много, на поиск решений.

Приведу ещё пару примеров, может кому-то будет полезно, если Google приведёт его сюда.

Забудьте всё, что вы знали про Timer. Объекта Timer нет. Но его можно создавать через код и называется DispatcherTimer (Microsoft, really?) Сперва его надо создать в коде и задать интервал:

DispatcherTimer = New Windows.UI.Xaml.DispatcherTimer()
            AddHandler DispatcherTimer.Tick, AddressOf dispatcherTimer_Tick
            DispatcherTimer.Interval = New TimeSpan(0, 0, 0, 0, 10)

Затем создать событие dispatcherTimer_Tick – чтобы это всё выяснить, у меня ушло 2 дня. Так как прямым гуглением не находилось ничего. Только крик о помощи на http://stackoverflow.com привёл меня к нужному решению.

После чего я стал более вдумчиво читать страничку знаний Microsoft и искать именно по ней. Тут уже стал находить ответы самостоятельно, благо там сделано очень удобно – искомое решение предоставлено на нескольких языках программирования одновременно. Чувствуется забота о разработчиках, хоть и с горьким привкусом.

Далее мне нужно было обратиться к веб-ресурсу, где лежал текстовый файл, чтобы взять оттуда одну строчку. Всё просто: иду и http://msdn.microsoft.com нахожу нужное решение, но… Оно не работает. Нет, нет, я что-то сделал не так. Всё стираю делаю по новой – опять ошибка. Не узнаются команды StreamReader и GetResponse. Как же так, вот же они прям на сайте Microsoft! Ну ладно уж, на http://stackoverflow.com мне точно помогут. Но и там говорят, что всё правильно сделано и должно работать как надо. Паника и слёзы! Забросил всё на неделю.

Вернулся и вижу – один из пользователей Stackoverflow спросил, а не пишу ли я на VB.NET, который не Silverlight? Первая моя реакция была:

image

О чём вообще речь, что это такое, зачем он меня пугает?
Оказалось, существует не только VB.Net, VB.Net for Windows Phone, но ещё и VB.Net for Windows Phone (Silverlight), все они в разной степени отличаются по синтаксису.
Microsoft, WTF?

Посмотрев внимательно на http://msdn.microsoft.com я увидел, что практически всё, что там описывается — всё для Silverlight и мне просто везло до этого момента, что синтаксис более менее совпадал. Вот такую ошибку я совершил при создании своего проекта, о чём писал выше – выбрал Balnk App (Windows Phone), а не Balnk App (Windows Phone Silverlight).

Бросить и начать всё сначала? Нет, слишком много бессонных ночей было убито на создание того, что есть и я решил не сдаваться.

Долгим гуглением и хождением по форумам разного разлива я нашёл решения для чтения текста из файлика, который лежит в Web, может кому пригодится:

Dim httpClient As HttpClient = New HttpClient()
Dim form As New MultipartFormDataContent()
Dim getUrl As String = "http://website/test.txt"
            Dim response As HttpResponseMessage = Await httpClient.PostAsync(getUrl, form)
            responseText = Await response.Content.ReadAsStringAsync()

Далее возникла проблема с показом сообщения пользователю – элементарный MessageBox. В VB.Net (Windows Forms) он делается одним способом в VB.Net (Windows Phone) – другим, в VB.Net (Windows Phone Silverlight) – третьим. Но мы то уже взрослые, привыкшие и нас это не пугает. Две ночи и решение найдено:

Async Function ShowMyDialog() As Task(Of Boolean)
        Dim result As Boolean = False
        Dim dialog As New Windows.UI.Popups.MessageDialog(rl.GetString("Try_again"), rl.GetString("Game_Over"))
        dialog.Commands.Add(New Windows.UI.Popups.UICommand(rl.GetString("Yes"),
        Sub(command)
            //some action
        End Sub))
        dialog.Commands.Add(New Windows.UI.Popups.UICommand(rl.GetString("No"),
        Sub(command)
           //some action
        End Sub))
        dialog.DefaultCommandIndex = 0
        dialog.CancelCommandIndex = 1
        Await dialog.ShowAsync()
        ' 
        Return result
    End Function

Не так-то просто, как видно. И вот, пройдя через все эти дебри кодинга, я вышел к релизу. Всё было готов, всё работало. Я решил добавить баннер с рекламой, это оказалось очень просто – есть инструмент AdControl, который просто настраивается. Надо лишь получить личный код на сайте http://advertising.microsoft.com/en/home и всё. И тут оказалось, что Эстония, где я живу, и Россия не входят в список стран, которые могут участвовать в данной программе. То есть если у вас нету банковского счёта в списке из 35 стран, то, извините, вы в пролёте.

Ок, я слышал есть такая же программа от Google. Да, есть такая и Эстония в списке. Отлично! Скачиваем дополнение к MS Visual Studio 2013, пытаемся добавить баннер в проект и… его нет среди доступных инструментов. Как? Почему? А потому что работает это только на Silverlight!

Microsoft Google, really?

Опять боком вышла ошибка, допущенная в начале. Но переделывать нету уже никаких сил. Чтобы реализовать свои планы и стать миллиардером за 2 часа я принял решение создать 2 приложение Free и Pro версии. Это заняло 1 час.
Ну всё – готово!

Начинаем публикацию. Тут вообще всё просто: MS Visual Studio 2013 сам прогоняет пару тестов на пригодность и ошибки, генерирует .appxupload – файл. Который заливается на страничке http://dev.windowsphone.com

После чего нужно ждать подтверждения сертификации приложения. Я отправил приложение в 3 часа ночи, в 5 утра получил подтверждение регистрации. Довольно быстро! Однако, тут же обнаружил баг в приложении и решил его исправить. После чего решил загрузить обновление приложения и попал в ступор, так как на страничке приложение не было кнопки для заливки нового .appxupload–файла. А как же обновить? Оказалась просто — надо кликнуть вот сюда:

image

Поди догадайся.

UPD: Пока писал статью — уже починили. Оперативно!

image

Однако прочитать некоторые данные в панели мониторинга до сих пор невозможно:

image

Итог

В целом Microsoft создала отличную платформу для создания мобильных приложений для Windows Phone, Android и iOS. Если даже криворукий неопытный непрограммист смог с помощью неё создать своё приложение, то скилловым спецам тут море покалено. Через ругань и слёзы, благодаря своей упоротости упёртости и желанию воплотить мечту, я сумел дойти до финиша. Если вы владеете навыками хоть в каком-нибудь языке из поддерживаемых MS Visual Studio 2013, то бросайте всё и садитесь за написание своего мобильного приложения. Я уверен, вы достигнете цели, хоть и придётся пройти через боль и отчаяние.

Автор: zjuka

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js