Клиент WP7 соц. сети «Вконтакте» с открытым кодом


    Сегодня уже есть множество демонстрационных проектов под WP7.

    Я тоже решил добавить свою «каплю в море» в виде исходных кодов одного из своих проектов «для фана» — клиент социальной сети «Вконтакте» который писался в свободное от работы время.

    Проект далек от идеального, но буду рад если код окажется кому нибудь полезен.
    На текущий момент функционал очень скуден: сообщения/переписки, список друзей, просмотр фотографий, возможность закрепления на главной почти каждой страницы.

    Под катом небольшое описание следующих на очереди функций и возникших проблемах.

    Клиент работает через официальное API, соответственно авторизация реализовано через встроенный браузер.

    Исходный код
    Исходный код и xap файл можно найти по адресу:
    http://vkontaktewp.codeplex.com/releases/view/75456

    Ожидаемые функции:
    В скором времени будут добавлены следующие функциональности:

    ProgressBar — одна из самых мелких и тем не менее самая необходимая функция — индикатор процесса загрузки контента.
    Pin to start — сейчас почти все страницы можно закрепить на главной, по возможности планируется добавить разную стилизацию для каждой страницы.
    Сохранения контактов — легкореализумая, но порой очень нужная функция (прошу прощения за тафтологию :) сохранения контакта из «вконтакта» в список контактов на телефоне.
    Навигация — на данный момент навигация не совсем корректно выстроена. Кнопка Home на каждой странице предназначались для возможности перехода в корневую страницу при открытии приложения из закрепленных иконок. По идее, эта кнопка должна отображаться только если мы перешли из закрепленной иконки. В данный момент реализация этой функции была невозможно из за проблем с AppBar (изложено ниже). Не был уверен насколько правильно оставлять в том виде как сейчас есть. Возможно было бы лучше вообще отключить переход на главную чем всегда показывать эти кнопки.

    В дальнейшем предполагается добавление возможности комментирования фотографий, добавления новых, поддержки «стены сообщений» и т.д. и т.п. по мере востребованности.

    Проблемы с кодом:
    В самом коде тоже есть несчетное множество недоработок и недостатков.
    Сразу хочу предупредить, что код далек от идеала, он множество раз рефакторился, местами есть копи-паст, местами не оптимален, местами нарушает принцип MVVM, но тем не менее решил выложить в том виде как есть.

    Обработка ошибок — основная проблема которая сейчас недореализована — частично реализованная обработка ошибок. Например, ошибка авторизации обрабатывается корректно, но при этом сейчас приложение падает при отсутствии подключения к сети, что, мягко говоря, не хорошо.

    AppBar — другая тоже значительная проблема, которую сейчас надо исправить. Это знаменитая, печально известная проблема с привязкой данных к AppBar — любая попытка привязки данных приводит к исключению.
    Вторая проблема с тем же AppBar связана с тем что у кнопок в AppBar нет свойства IsVisible — т.е. просто взять и скрыть кнопку не получится. В другом проекте эта проблема решалась собственной реализацией ApplicationBar — здесь, скорее всего, тоже будет такое же решение.

    Код менялся множество раз, некоторые вещи остались «в наследство». Например сборка DataLayer, предназначенная для хранения данных в кеше, для обеспечения возможности работы в офлайн режиме, в данный момент отключена, код почти вычищен и эта сборка не используется. С другой стороны «унаследованного» кода не так много на самом деле.

    P.S.
    Доклад/подробная статья
    Мне бы хотелось написать статью или снять доклад на тему разработки приложений под WP7, как всегда, останавливает неизвестность о целевой аудитории. С одной стороны не хочется утомлять банальностями, с другой стороны не хочется упустить важные детали. Буду рад любым пожеланиям/вопросам/замечаниям, которые потом могли бы помочь расставить акценты в статье/докладе.

    P.P.S.
    Сливающим карму- мне в принципе все равно сколько кармы останется, лишь бы была возможность писать, просто интересно было бы узнать чем вызвано недовольство — может стиль изложения или ошибки в статье, ошибки в коде?

    P.P.P.S.
    Выложил несколько скриншотов http://vkontaktewp.codeplex.com/. Чуть позже постараюсь оформить домашнюю страницу поприличнее.
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

      –6
      Правилами размещения приложений в Маркетплейсе запрещено выкладивать приложения с открытим исходным кодом.
        +12
        Неправда. Запрещено выкладывать приложения с лицензиями типа GNU. А Apache-лицензия — запросто.
        –3
        Oh, Lord! Подберите портянку ради всего доброго, что есть на этом портале.
          0
          Прошу прощения за невежество — я сразу не понял что имелось в виду под «портянкой». Я вроде бы расставил в статье <habracut></habracut> — сейчас проверил — действительно на главной отображается вся статья. Когда полез смотреть код — оказалось что в начале есть только <habracut/> без закрывающего тега по средине. В статье по прежнему расставлены открывающая и закрывающие теги. Я понимаю что что то сделал не так — но не понял что именно — буду благодарен подсказке как исправить.
          +1
          Спасибо за пример, конечно, но мне еще не попадался столь детальный разбор проблем с кодом, так что пока подожду скачивать =)
            +1
            Ну, вот :) Как говориться, «хотел как лучше». Думал это поможет немного разобраться в коде, что сделано, а что нет :)
              +1
              А хотя! Исторически будет очень интересно понаблюдать за процессом превращения проекта из «гадкого утенка» в «прекрасного лебедя». Поучительно =)
            0
            Расскажите, пожалуйста, можно ли разрабатывать приложения без отстёгивания 100 долларов МС за ДЕВ акаунт и прогонки их через онлайн магазин. Можно ли загружать код напрямую из студии?
              +2
              Насколько я знаю, можно не отстегивать,
              — если вы студент
              — если аппарат крячится chevronом (доманго, кажется)
              — если у вас есть машина времеми, можно слетать в будущее и поставить labs.chevronwp7.com/
                0
                — И еще если «студия» touch studio
                  0
                  Или, можно накатать кастомную прошивку с Манго и вшитым шевроном и твиками.
                    0
                    Есть способ платить меньше winphone.softkey.ru/prices.html
                  +1
                  Было бы неплохо облагородить вашу страничку на кодплексе — хотя бы скриншотов накидать. Это сильно помогает определиться, ставить программу или подождать пока.
                    0
                    Действительно, очень актуальное замечание. На данный момент несколько ограничен в возможностях и пока что только выложил несколько скриншотов http://vkontaktewp.codeplex.com/, вечером постараюсь облагородить и оформить более прилично.
                    0
                    Кстати тут передают, что проблема Visible с Appbar решается изменением порядка иконок
                      0
                      Да, это верно — так и решил проблему в другом проекте, но дело в другом — если хотим использовать MVVM нельзя сделать привязку данных(Binding) к AppBar по умолчанию предоставляемый платформой. У меня есть собственная реализация AppBar в другом проекте — где мне надо было в зависимости от выбранного элемента панорамы показывать разные наборы иконок в ApplicationBar. Мне не понравилась реализация в другом проекте — она получилось громоздкой и хотел в этом проекте попытаться переписать в более чистый и компактный код.
                        0
                        посмотрите на EventToCommand
                          0
                          Могу поделиться своей обёрткой над ApplicationBar, написанной специально для поддержки MVVM. Поддерживается биндинг ко всем свойствам ApplicationBarButton и ApplicationBarMenuItem, добавлены зависимые свойства Command, CommandParameter и IsVisible.

                          В коде выглядит примерно так:

                          <phone:PhoneApplicationPage...>
                          ...
                          <ctrl:PageBar.Instance>
                          <ctrl:PageBar Mode="Minimized" Opacity="0.5">
                          <ctrl:PageBarButton Command="{Binding FirstCommand}" IsEnabled="False" />
                          <ctrl:PageBarButton Command="{Binding SecondCommand}" IsVisible="{Binding ShowSecondCommand}" />
                          <ctrl:PageBarButton Command="{Binding ThirdCommand}" />
                          <ctrl:PageBarMenuItem Text="First item" Command="{Binding FirstMenuCommand}" />
                          <ctrl:PageBarMenuItem Text="Second item" />
                          <ctrl:PageBarMenuItem Text="Third item" />
                          </ctrl:PageBar>
                          </ctrl:PageBar.Instance>
                          ...
                          </phone:PhoneApplicationPage>


                          Код пока особо не тестировался и нигде не опубликован, но могу прислать архив на почту.
                            0
                            Спасибо, было бы очень интересно! :)
                        –1
                        Извините за оффтоп но походу просочился первый Nokia на WP7, а кармы для публикации не хватает.

                        Only users with full accounts can post comments. Log in, please.