11. #05: learning curve
• Is it hard to learn basics?
• How far from basics to professional?
• Is it a “pleasant” learning
experience?
#06: making mistakes
• Does it help avoid mistakes?
• Is it easy to make your code crash?
12. #07: good-looking UI
• Is it easy to create good looking UI?
#08: making piece of
s… often will devs make crappy
• How
apps?
13. #09: standard & custom
• Is it easy to implement common
tasks?
– navigating between screens
– displaying lists
– loading data from web service
– parsing xml
• Is it easy to customize?
17. my favorite features
• LINQ (to objects, to XML, to HTML)
• data binding
• lambda expressions
having difficulties
• everything is asynchronous
• BACK button and tombstoning
18. local database
• API: LINQ to SQL
• Design: in code, attributes
• Store: Isolated Storage
• article on MSDN
19. background …
• AGENT
– PeriodicTask (~25 sec)
– ResourceIntensiveTask (~10 min)
• DOWNLOADING
– download/upload up to 5 requests
– control execution
20. tiles & notifications
• tiles updates
• deep linking
• multiple tiles per application
• number on tile
• local toast notification
• … notification services
23. submission walkthrough
• app hub account + ready .xap file
• description and comments
– dev and testing comments
• upload images (some unexpected sizes)
– should have high quality master images
• categories and pricing
submit
24. back & back again
back = the source of all evil
i. can you exit the app?
ii. “back” cycles?
iii. loss of state and crash
iv. press back in unexpected places
v. lost handlers/bindings
25. loss of internet
if your main action is to download stuff
– test the connectivity loss!
how to simulate connectivity loss?
• connect device to a computer
• remove the cable/WiFi
– when connected device ALWAYS uses
PC internet connection
26. memory limit
on devices your app must not use
>90Mb at peak.
how to get memory tests?
• use DeviceStatus
check ApplicationPeakMemoryUsage
check ApplicationCurrentMemoryUsage
27. exception handling
• do not CRASH!
• notify the user with a solution:
“try again later”
“check your internet connection”
“contact support@…”
28. black & white
• test dark and light themes
– some icons may look unexpectedly white
– some colors may not correlate well
29. capability testing
• use “CapabilityDetection.exe”
– c:Program Files (x86)Microsoft SDKs Windows
Phonev7.0ToolsCapDetectCapabilityDetection.exe
• remove all unnecessary stuff
– debug libs
– test data
–…
30. getting feedback
you should think about users that will
try to find your app, download and use
• provide keywords for search
• provide contact information in the
description or inside the app
31. look up statistics
• number of downloads (AppHub)
– results come 1 week late
• ads – pubcenter/adMob site
• preemptive stats
– http://www.preemptive.com/know-
more/application-monitoring
Добрый день,Меня зовут Иван Киркоров и сегодня я хочу поделиться своим взглядом на мобильную разработку.И немного отойти от корпоративного подхода, а взглянуть глазами одного конкретного разработчика.
Я работаю в компании ЕПАМ уже 5 лет. И сейчас я являюсь руководителем «Мобильной Лаборатории», подразделения, где организуется и происходит обучение мобильных специалистов.Лаборатория стартовала недавно. у меня было только 2 выпуска, под Андроид и под iOS. Но за это время я успел изучить и разобраться с этими платформами и добавить их в копилку знаний к Windows Phone.Так получилось, что всерьез интересоваться WP7 я начал в середине прошлого года и сделал так, чтобы поменять направление деятельности и превратиться в мобильного разработчика.И на это у меня было несколько причин.
Каждый для себя сам решает кем он хочет быть.Для меня ключевым был анонс Windows Phone и возможность программировать на Silverlight.Я давно хотел сделать какой-то свой проект. И я четко осознавал, что единственное место, где можно сделать достойную вещь сейчас (для одного разработчика) – это мобильный рынок. Можно сделать маленький проект с небольшим числом функциональностей и он все равно будет иметь смысл. И не потребуется почти никаких вложений (ни на хостинг, ни на дизайнера, ни на что-то еще).С выходом WP7 я увидел, что могу легко переиспользовать свои скиллы и начать что-то делать уже сейчас.
Сейчас перед каждым будущим, да и текущим мобильным разработчиком стоит выбор. Выбор платформы, который мы посвятим самое дорогое, что у нас есть – наше время (и чаще всего наше свободное время, ибо на работе есть работа и ее надо работать)
Платформы разные.И с точки зрения навигации внутри приложения, и в построении внутренней архитектуры проекта и в подходе к реализации функционала и стандартных задач.Например, в WP7 у нас есть множество условно независимых страниц и между ними делается навигация в обе стороны.Есть мощнейшие механизмы Silverlight – DataTemplates, DataBinding, разделение кода и UiюИ достаточно неопределенный подход к архитектуре.В iOS все намного проще и прямолинейней. Один экран, и множество магического API с View Controller-ами и делегатами.Необычный язык программирования и мир полуавтоматического memory management с reference counting. Несмотря на «магию» и необзодимость многое запоминать и знать – API достаточно хорошо продуман и реализован. Стандартные вещи делать легко, кастомные – ужасно сложно.Андроид имеет отлично продумаю целостную архитектуру платформы, все приложения состоят из 4х типов компонентов, которые могут общаться при помощи Intent-ов. Позволяет сделать в приложении почти все…. жаль, что в основном это все делается не слишком просто. Несмотря на использование Java…В общем они совсем разные.
Но нет смысла спорить кто круче. Меряться фичами или девайсами.Наш вопрос – что мне как разработчику подходит больше.Для этого надо задавать подходящие вопросы и сравнивать соответствующие моменты.
Мобильные платформы очень отличаются от всего остального программирования. Но есть шанс переиспользоватьскиллы которые уже есть.iPhone – точно нет. придется учить с нуля новую платформу, необычный язык. Имея хорошую базу программирования это в принципе несложно. Язык С тоже плюс.Android – кажется, что знание Java должно помочь. Но это увы не так. Андроид совершенно нестандартная платформа. Java дает только синтаксис, но он очень примитивен. Разве что умение пользоваться Eclipse чего-то стоит.WP7 – сложная платформа, но если вы знаете Silverlight – вы практически уже там. В этом огромный плюс, так как можно практически 100% переиспользовать знания по Silverlight.
Здесь можно провести целый час обсуждая инструменты. Но в интернете и так уже достаточно много статей.Вывод один: Microsoft предлагает лучший набор инструментов в интегрированной среде Visual Studio.
У каждой платформы свой подход к документации.В принципе проблемы у всех одинаковые – документация – это reference. Какие методы есть и для чего каждый из них, но как ими правильно пользоваться нигде толком не написано.Guide статьи очень полезны и есть везде.В Андроид документацией можно считать исходный код платформы.Поэтому особую ценность приносят книги и статьи.Стоит отметить, что до определенного Apple заставляла разработчиков быть под NDA и это реально сыграло роль – что статей в нете было очень мало. сейчас ситуация вполне нормальная.
C#не текущий момент самый продвинутый и мощный язык, среди универсальных языков.Java – вероятно самый распространенный и самый целостный язык. Его легко изучить, он базируется на строгих принципах, но этого не достаточно, чтобы программировать. Требуется знать библиотеки.
Теперь вопросы:Общая сложность обучения. Это личный вопрос для каждого.А вот с ошибками – тут все просто. Проще всего сделать ошибку – это работа с памятью в iPhone.
Сделать хорошо можно в любой системе. Проще всего там, где либо заранее многое реализовано(iPhone) или где легко настраивать UI (WP7)А вот сделать некачественное приложение легче всего в Android. А в iPhone или WP7 это получится если не придерживаться UI Guidelines.
И важнейшее. При написании приложений есть набор задач, которые надо решать постоянно.На них тратится большая часть сил и времени.И конечно, требуется сделать что-то нестандартное. Silverlight имеет уникальный механизм DataTemplate. Который позволяет менять внешний вид полностью, не трогая функционал.
На самом деле, при должной сноровке написать можно многое. И в конце концов можно сделать приложение своей мечты…И тут оказывается, что последний шаг не такой и маленький.
http://create.msdn.com/en-US/home/about/app_submission_walkthroughОчень важно подойти серьезно и подготовить адекватное описание и качественные картинки.После сабмита ваше приложение будет тестироваться на стороне MS как автоматическими инструментами, так и ручное тестирование. Причем у них есть Test Plan, и во многом открыт (только я об этом не знал на тот момент) и им можно пользоваться. Application Certification Requirements for Windows Phonehttp://msdn.microsoft.com/en-us/library/hh184843(v=VS.92).aspxТехнические требования и тесты:http://msdn.microsoft.com/en-us/library/hh184840(v=VS.92).aspx
1)Я 4 раза пересабмитывал приложения из-за того, что не полностью оттестировал back.2) Другое приложение я исправлял дольше чем писал изначально, лишь бы back срабатывал адекватново время возвращения из tombstoningнекоторые биндинги терялись и конечно, могут потеряться eventhandler-ы которые не были пересозданы после возвращения.
use dnp.Counters.dll http://dotnetprofessional.com/blog/post/2010/09/27/Debug-Memory-Counter-for-Windows-Phone-7.aspx (switch off status panel to see it)