Как стать автором
Обновить

Комментарии 57

А под WP8 когда ожидается?
если я правильно помню, софт написанный под wp7.5 должен сразу работать под wp8.
Все верно, Майкрософт обещает перекомпилировать приложения в облаке и сделать весь парк приложений под WP7 доступным для WP8. Интересный момент заключается в том, насколько гладко пройдет перекомпиляция обфусцированных приложений. Придет время — увидим.
А зачем Silverlight перекомпилировать?
Скорее пересоберут xap файл, а не перекомпилируют. Хотя, это лишь предположение.
Я так понимаю, достаточно Silverlight под wp8 перекомпилировать и все.
Silverlight как и был так и остался)
«Перекомпилировать в облаке»?

За такие фразы хочется жестко $@#$$@ черенком от лопаты.
Это действительно так. Cloud compiler в оригинале
Это вольная цитата речи одного из представителей MS. К сожалению не смогу сейчас найти ссылку на оригинал, но это было на одной из конференций.
Но не по-русски написано, согласись. Имхо стоит адаптировать подобные выражения в пользу здравого смысла.
Не соглашусь, просто потому, что технические термины есть технические термины. Я же не сестре на кухне рассказываю, как это будет происходить, а в технически подкованном сообществе. Если слово компиляция пришло в среду разработки программного обеспечения без перевода, а Майкрософт (и другие крупные компании) продвигают «Облачные технологии», то выражение «перекомпилировать в облаке» считаю нормальным.

Если не согласны, давайте называть компьютеры электронно вычислительными машинами, а компиляцию — "трансляция". Будет звучать по русски, но, согласитесь, это не в пользу здравого смысла.
вместо ObservableCollection можно было б заюзать IList для оптимизациии скорости листания. почему у вас должно грузиться 40 писем долго? вы ж грузить вроде должны просто список папок, а при тапе уже на конкретную папку грузить список писем этой папки или не так?
40 — это количество папок, которое мы добавили в почтовый ящик для тестирования скорости загрузки. Каждая папка соответствует одному элементу в Pivot'е. Pivot по своей внутренней структуре сразу создает все элементы при первом отображении, и это сильно затормаживало запуск в программы.

Элементы списка писем (письма подгружаются по 20 штук) создаются при первом отображении папки, т.е. при листании Pivot'а, и в целом это происходит достаточно быстро.
можно было б повесить событие onSelectionChanged, не помню как точно, которое как раз отвечает за смену item'а Pivot'а и при смене подгружать список писем для конкретной папки…
Именно это я и написал:

Элементы списка писем (письма подгружаются по 20 штук) создаются при первом отображении папки, т.е. при листании Pivot'а...

И добавил, что с этом-то проблем не было:

… и в целом это происходит достаточно быстро.
понятно) спасибо) а если писем так штук 500 пользователь подгрузил, с этим тоже нет проблем? письма грузите по достижению конца списка писем автоматически или вручную по нажатию кнопки какой-либо?)
При переключении на папку подгружаются первые 20 писем. Если долистать до 20го — будут автоматически загружены еще 20 и т.д. Эта же ситуация происходит при чтении письма — если свайпом перейти к последнему загруженному письму, будут подгружены следующие 20.

Проверяли с подгрузкой 400 писем (20 страниц по 20 писем). Отображается достаточно быстро, проблем с нехваткой памяти при этом тоже не возникло. Но 400 писем это достаточно много. Если нужно найти письмо, которое было получено давно — лучше воспользоваться поиском.
можно было б повесить событие onSelectionChanged, не помню как точно, которое как раз отвечает за смену item'а Pivot'а и при смене подгружать список писем для конкретной папки…
Зачем отдельное приложение? Телефон умеет работать с почтой из коробки. У меня есть ящик на Mail.ru — никогда не испытывал проблем с его чтением через телефон.
просто при установке этого клиента, установится еще и майл гвард)
Основной плюс для меня — поддержка Push Notifications.
если я правильно понял технологию Push Notifications некая служба постоянно держит соединение с сервером. Как на это реагирует батарейка, если связь идет через wi-fi?
Сервис, который обрабатывает пуш-нотификации всех подписанных программ один (что экономит ресурс процессора). И он учитывает состояние батареи (в режиме энергосбережения пуши доставляюся с задержкой). Это гораздо более экономичный способ, в сравнении с ситуацией, если бы все приложения в фоне постоянно опрашивали свои сервисы.

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

Рискну, так же, предположить, что опрашивая сервис встроенное приложения проходит весь цикл авторизации, что отрицательным способом сказывается на трафике и процессорном времени.
Простая проверка почты в нужный интервал очень даже работает.
Но согласитесь, когда письмо, только придя на сервер, сразу оказалось в вашем телефоне, это тоже приятно.
Разницы со встроеным приложением, особо не заметил
Обрезанные фамилия и стремное выравнивание — это фишки wp? или косяки программы?
Обрезанные фамилии — однозначно фича, причем довольно таки симпатично выглядит в динамике при правильной реализации
Насколько я помню обрезанный текст показывает, что можно сделать свайп вправо и там будет какая то еще менюшка/информация/и т.д. Тогда можно пролистнуть посмотреть инфу о пользователе и заодно фамилия будет видна. Но что то есть предчувствие, что там ничего нет, и фамилии зря обрезанные.
И вообще как то оформлено не в стиле Метро. Когда представляют приложение на WP делают не скрины, а разворот программы. Хотя как я вижу по скринам тут абсолютно не учтены особенности метро. Например те же фамилии — можно было сделать стену из писем, при перелистывании переходим к следующему письму, видим начало имени. Хотя это немного странно выглядит. Потом в метро особо не принято делать список папок… делают опять же стену, чтобы вошел и смотри сразу нужную папку.

Внизу выезжающее меню, насколько я помню оно именно должно открываться, а не быть открытым. Например в окне ввода данных для входа надо сделать кнопку отдельно Вход, а не запихивать её в меню Т.к. это не дополнительная функция, а основная.
Возможно конечно стандартный выглядет также, но ИМХО немного не сходится в метро.
Полностью согласен. Увы не достаточно много общался с мобильным Metro, чтобы написать настолько развернутый комментарий.
Комментарий получился действительно развернутым, однако судить о программе по скриншотам довольно сложно, не так ли? Если вы попробуете установить приложение, то поймете, что ряд описанных замечаний не верны.

По поводу Application Bar: туда выносятся до 4х ключевых действий окна. Дополнительные 3 действия могут быть вынесены в меню (могут быть и больше, однако Metro UI Guidelines не рекомендуют выносить в аппбар и меню суммарно больше 7 действий).

Еще в процессе разработки Агента мы консультировались с дизайн бюро Майкрософт в Лондоне, которые дают свои рекомендации по оформлению приложений в стиле Метро и именно они порекомендовали убрать кнопку «Войти» из окна в нижнюю панель.
Надеюсь, хоть тут не будет Mail.ru защитника? :)
Кстати это была шутка.
Не могли бы вы поделиться (и мнение других WP7-разработчиков тоже интересно), какой вы используете элемент управления для отображения перечня писем?

ListBox или что-то другое? Я просто в похожей задаче (отображение перечня, правда не писем а объявлений), в данный момент использую ListBox в который просто через datacontext кидаю список объявлений.

Но мне кажется, использование листбокса для этого несколько избыточно, как минимум из-за того, что в обработчике SelectionChanged каждый раз приходится делать что-то такое
if (SearchList.SelectedItem != null)
{
   SearchList.SelectedItem = null;
   ...
}

чтобы сбрасывать выбранный пользователем элемент.

Есть аналогичные решения? Чтобы закинуть список элементов и по тапу по одному из них срабатывал обработчик, и чтобы это решение было лучше листбокса?
Есть контрол ListView.
спасибо! Попробую
Упс, рано отправил. В ListView можно ItemTemplate определить, чтобы он реагировал на нажатие. (Хоть кнопку положить туда. На халяву получите tilt-effect).
Мы спользуем свой класс, с расширенной функциональностью, но тоже наследуемый от ListBox.
А чем мешает выбраный пользователем элемент?
тем, что если в результате выбор элемента пользователь переходит на новую страницу, и на ней нажимает «назад» — то если не сбросить выбор то этот элемент уже будет выбран и при повторном тапе по нему обработчик события SelectionChanged соответственно не сработает
Видимо проблема в том, что для обработки нажатия Вы используете SelectionChanged.
Можно использовать Триггеры. В шаблое ItemTemplate пишется следующее:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

<DataTemplate x:Key="mailListItemTemplate">
	<Grid >
		<i:Interaction.Triggers>
			<i:EventTrigger EventName="Tap">
			<i:InvokeCommandAction 
				Command="{Binding Source={StaticResource viewModelLocator}, Path=MailListViewModel.GoToReadMail}" 
				CommandParameter="{Binding}" />
			</i:EventTrigger>
		</i:Interaction.Triggers>
...
	</Grid>
</DataTemplate>


В коде ViewModel обявляется свойство:

public ICommand GoToReadMail { get; set; }


И инициализируется делегатом:

using Microsoft.Practices.Prism.Commands;

GoToReadMail = new DelegateCommand<MailViewModel>((x) =>
	{
		...
	});


В результате, по тапу будет вызываться делегат, в котором Вы будете получать элемент, по которому тапнули в параметре x.
"… пока невозможно вести и выводить логи процесса тестирования и делать скриншоты экрана прямо с устройства..."
Для скриншотов нужно использовать эту программу: Screen Capturer. Его нет в Marketplace, нужно скачать .xap и сделать деплой на устройство. По мне то это лучшая программа и наверно единственная для снятия скриншотов.
Чем не устраивает снятие скриншотов из эмулятора?

Мне кажется, самый оплтимальный вариант
Да, мы использовали Screen Capturer, как единственное (известное нам) решение. Но это скорее костыль.

Во-первых, для установки он требует девелоперского анлока (т.е. для задач бета-тесирования точно не подходит). Во вторых, это отдельное приложение, которое нужно запускать перед процессом тестирования. В третьих, фоновая задача, которая контролирует кнопку камеры может работать максимум 5 минут, после чего нужно снова перезапускать. В четвертых, после снятия скриншотов нужно заходить в приложение и сохранять их в альбом.

Когда речь идет о подготовке скриншотов для публикации в маркет — можно использовать эмулятор. А когда отдаешь устройство с установленным приложением тестировщикам, то они, конечно, негодуют, особенно после тестирования версий Мобильной Почты для iOS и Android, в которых скриншоты делаются одним двойным нажатием.
А зачем делать отдельное приложение? В WP замечательный почтовый клиент со всем нужным функционалом и интеграцией, пользуюсь как раз 3-мя ящиками на Gmail и Mail.ru — всё замечательно.
Брендинг. Ваш КО.
поддерживаю вашу мысль, но хочу отметить, что у гугла того же на андроиде есть свой клиент для почты in general и для gmail отдельно. зачастую оба клиента проверяют один и тот же ящик
Вопрос, на самом деле, не праздный. Действительно, хотя родной клиент и не идеален по многим показателям, зато сторонний будет лишён прелестей интеграции. И нужны более веские поводы, чем просто реализация пуш-мейла, чтобы пользователи почтового сервиса mail.ru (они же — обладатели устройств с Windows Phone) стали действительно массово пользоваться этим приложением. В статье про это ни слова, в комментариях тоже тема не раскрывается, хотя вопрос звучит не в первый раз, что только наводит на подозрения…
Целью статьи было не расхваливание клиента и демонстрация его возможностей и отличительных особенностей, а хотелось поделиться некоторыми техническими проблемами и решениями, с которыми пришлось столкнуться.

Но раз вопрос встал настолько остро, отвечу. Если вы пользователей различных почтовых клиентов, то функционала стандартного клиента должно хватать. Однако, если вы пользуетесь веб-интерфейсом Mail.Ru и вам приходит много писем на которые нужно быстро реагировать, то тут предлагаемый клиент имеет определенные плюсы. Они во многом обеспечены тем, что клиент использует практически тоже API, что и веб-интерфейс.

И так, преимущества:
+ как уже говорилось — мгновенные пуш уведомления о новых письмах (в то время, как встроенный клиент предлагает различные периоды времени, при этом минимум 15 минут). В том числе, если приложение лежит запущенным, и письмо приходит в открытую папку, то список писем обновляется автоматически;
+ между письмами можно переключаться жестами вправо-влево, что достаточно естественно в самой платформе, но не реализовано во встроенном клиенте;
+ такое же быстрое переключение жестами между папками, в то время как встроенный клиент позволяет делать это только через меню;
+ мгновенная синхронизация с сервером: открыли письмо в программе — на вебе оно уже помечено прочитанным, отметили непрочитанным — веб тут же отреагировал;
+ работа с флажками: не смотря на то, что при работе с другими почтовыми сервисами во встроенном клиенте есть возможность ставить звездочки (помечать письма), для работы с серверами Mail.Ru эта возможность отсутствует;
+ пометить письмо как спам из встроенного приложения нельзя;
+ встроенное приложение хранит письма за неделю (или другой указанны срок), а в представленном клиенте подгрузка писем происходит по мере необходимости и есть возможность посмотреть письма за полгода-год назад;
+ интеграция системной и серверной адресной книги: встроенное приложение предлагает вставить контакты только из локальной адресной книги, в то время как в представленном клиенте используется и локальная адресная книга и подгружается актуальная адресная книга из веба, которая автоматически пополняется адресатами, которым вы пишете.

Про опасения потерять прелести интеграции: единственное, что приходит в голову из того, что не умеет разработанный нами клиент, это показывать счетчик непрочитанных на экране блокировки. При этом количество непрочитанных писем отображается в углу тайла.
За столь подробный и обстоятельный ответ — спасибо! Вы правы в том, что ресурс здесь — практически сугубо IT-шный, но тем не менее, тема WinPhone вообще и приложений к нему в частности настолько актуальна, что без преувеличения можно сказать, вызывает повышенный интерес у всех посетителей, даже не прописанных на форуме. Поэтому вопрос о том, зачем вообще понадобилось тратить столько сил на создание отдельного клиента, если и штатный, по уверениям разработчиков, прекрасен, интересует практически всех. ПМСМ, будет хорошо добавить ссылочку на этот ваш пост с разъяснениями в тело публикации.
Про интеграцию — да, будут потеряны уведомления на экране блокировки, что обидно. Не будет возможности объединять папки «входящие», что менее обидно, но тем не менее… Чуть изменённый внешний вид у этого приложения по отношению к стандартному будет вызывать когнитивный диссонанс при необходимости работать параллельно с несколькими аккаунтами разных провайдеров — а вот это уже, пожалуй, самое серьёзное. Я знаю достаточно много людей, которые на Android всегда настраивают gmail-аккаунт еще и в общем почтовике, чтобы было удобнее работать со всеми письмами одинаково, хотя само приложение Gmail весьма не плохо сделано. Так что тут напрашивается в вашем приложении реализовать возможность настройки других POP3/IMAP аккаунтов, чтобы в едином поле можно было бы работать с несколькими почтовыми адресами.
У Пушкина должен быть другой адрес — простой и запоминающийся.

Как минимум, pushkin@mail.ru.
Теперь спам и зараза в виде спутников, гуардов и майл агентов будет еще на WP платформе… — мрак
Идиоты, прости Господи. Лучше бы веб-версию адаптировали. Нафига нам ваше приложение если а) почту можно добавить в стандартный интерфейс почты; б) все используют её для спама?
Наша веб-версия адаптирована для смартфонов на базе операционной системы Windows Phone и доступна по адресу m.mail.ru.
Какая разница? Со стандартного ящика такая же фигня.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий