Windows Phone и сторонние сервисы

При разработке приложений для Windows Phone, использующих сторонние сервисы (например, клиент для ВКонтакте), нужно помнить, что не каждый проверяющий имеет аккаунт в социальной сети.

Если ваше приложение — клиент для какого-то сервиса или просто использует возможности стороннего сервиса необходимо при публикации его в Windows Phone Store указывать тестового пользователя. В первый раз найти где это сделать не так-то просто:
wps
1. На странице добавления XAP кликаете на «More XAP options» (на картинке обведено красным)
2. Появится еще одно текстовое поле (там, где на картинке большой красный восклицательный знак). Туда и пишите все, что вы хотите, чтобы знали проверяющие ваше приложение модераторы.

Реклама

Windows Phone 7 и Live SDK

В одном из проектов появилась необходимость использования SkyDrive для бекапа пользовательских данных. Казалось бы, задача достаточно тривиальная. Но не тут то было.

Продолжить чтение «Windows Phone 7 и Live SDK»

Windows Phone Developer Tools и Windows Server 2008

При попытке установить Windows Phone Developer Tools на рабочей машине под управлением Windows 2008 R2 обнаржул крайне неприятное сообщение о том, что данная ОС неподдерживается. Логичный вопрос: отчего же? Решил, что это не повод останавливаться в попытках заставить работать WP Tools на Win2008r2. Немного погуглив нашел решение. Нам потребуется:

  1. скачать Windows Phone Developer Tools web bootstrapper
  2. в консоли перейти в папку, куда был сохранен скачанный файл. Распакуйте его выполнив команду «vm_web.exe /x» (vm_web.exe — имя скачанного файла). Выберите папку, в которую будет распакован файл.
  3. откройте в проводнике Windows папку, в которую был распакован файл на шаге 2. Откройте любым текстовым редактором файл «baseline.dat»
  4. найдите раздел [gencomp7788]
  5. измените значение параметра InstallOnLHS с 1 на 0
  6. измените значение параметра InstallOnWin7Server с 1 на 0
  7. сохраните и закройте файл baseline.dat
  8. выполните в консоли «setup.exe /web» из папки в которую распаковали vm_web.exe на шаге 2.

Не забудьте ключ /web — иначе установка завершится ошибкой.

Fiddler & Windows Phone Emulator

Возникла необходимость отлавливать запросы, отправляемые моим приложением для WP7. По привычке запустив Fiddler обнаружил, что запросы, которые исходят от эмулятора он не видит. Грустно стало мне. Но решил все-таки разобраться с этим. К счастью долго думать не пришлось — решение нашлось достаточно быстро. Нужно всего-лишь:
1. Установить Fiddler 2.3.0.7.
2. Запустить Fiddler.
3. Выбрать в меню Tools раздел Fiddler Options.
4. На закладке Connections выыбираем Allow remote computers to connect box.
5. Жмем OK.
6. В поле QuickExec под списком всех запросов, вводим команду «prefs set fiddler.network.proxy.registrationhostname HostName» где HostName имя вашего компьютера.
7. Перезапускаем Fiddler.
8. Запустить (или перезапустить) эмулятор Windows Phone 7.
9. Откройте на эмуляторе Internet Explorer.
10. Вуаля! Трафик из эмулятора отображается в Fiddler.

В дополнение можно отфильтровать список запросов таким образом, чтобы отображались только те запросы, которые идут через эмулятор. Для этого
1. Зайдите на вкладку Filters
2. Выберите пункт Use Filters
3. В группе Client Process кликните напротив пункта Show only traffic from
4. В выпадающем списке найдите процесс с именем, похожим на «XDE:6768 — Windows Phone Emulator».
Вот и все — теперь в списке отображаются только те запросы, которые вам необходимы.

WebClient и кэширование

Задача

Приложение для WP7 с WebClient для получения данных с url. При каждом обращении к данному url в браузере данные обновляются.

Проблема

Есть функция, которая должна при каждом ее вызове должна получать данные с определенного url:

void LoadRandomData() {
  WebClient wclientRandom = new WebClient();
  string url = "http://localhost/random.php";

  wclientRandom.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wclientRandom_DownloadStringCompleted);
  wclientRandom.DownloadStringAsync(new Uri(url));
}

void wclientRandom_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
  string result = e.Result;
  // делаем дела.
}

Но при получении данных программно из WP7 приложения данные возвращаются каждый раз одни и те же. То есть при вызове LoadRandomData() в e.Result всегда получали одну и ту же строку.

Решение

Решение оказалось до безобразия простым: добавляем случайный get-параметр и при каждом вызове будем получать новые данные:

void LoadRandomData() {
  WebClient wclientRandom = new WebClient();
  string url = "http://localhost/random.php?r=" + DateTime.Now.Ticks.ToString();

  wclientRandom.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wclientRandom_DownloadStringCompleted);
  wclientRandom.DownloadStringAsync(new Uri(url));
}

void wclientRandom_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
  // делаем дела.
}