Windows Phone 7 - как отправить файлы из / в приложение? - PullRequest
3 голосов
/ 23 февраля 2011

Я пытаюсь написать самое простое приложение для Windows Phone 7 и хочу иметь возможность отправлять файлы (в частности, XML, если что-то изменится) в мое приложение.В настоящее время у меня есть настройка службы WCF, поэтому я могу отправлять push-уведомления через нее.Проблема в том, что существует ограничение на количество необработанных данных, которые я могу отправить с помощью push-уведомления.

Мое решение состоит в том, чтобы отправить первоначальное push-уведомление (мозаичное или сырое), чтобы уведомить мое приложение о том, что я хочу отправить ему файл, а затем заставить приложение каким-то образом связаться с сервером (все включено).между прочим, мой персональный компьютер - я просто пытаюсь понять, как все работает) - с которого приложение получит / загрузит файлы.

Какой самый простой способ сделать это?Обратите внимание, что меня не интересует безопасность или что-то подобное.

Разъяснение - Вопрос очень важен: как мне передавать файлы с / на сервер на / с телефона?Предположим, что все остальное было обработано - приложение запущено и работает, и пользователь дал или даст разрешения на все возможные вещи, на которые он может дать свое разрешение.

Ответы [ 4 ]

4 голосов
/ 23 февраля 2011

К сожалению, общий размер push-уведомления (включая заголовки HTTP) составляет 1 КБ. Это означает, что его нельзя использовать для отправки больших объемов данных.

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

Для передачи файлов на телефон и с него вам потребуется использовать HttpWebRequest или WebClient , так как это единственный способ использовать HTTP на устройстве, а HTTP является единственным протоколом. в настоящее время доступны для передачи данных.

Хотя WebClient может показаться более простым в использовании, чем HttpWebRequest, он менее гибок и автоматически выполняет обратный вызов в потоке пользовательского интерфейса, и если вы загружаете файлы в фоновом режиме, вы почти наверняка не захотите этого .

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

0 голосов
/ 23 февраля 2011

Вы можете использовать класс WebClient и метод DownloadStringAsync для загрузки данных из веб-службы.Хорошим примером этого является приложение Twitter Скотта Гатри из MIX10 .

Джордж

0 голосов
/ 23 февраля 2011

Может быть, немного не по теме, но когда я думал об обмене файлами в своем приложении WP7, я нашел два подхода:

  1. Интеграция приложения с Dropbox
  2. Используйте расширенный проводник для WP7
0 голосов
/ 23 февраля 2011

Прежде всего: вы не сможете использовать этот подход автоматически - пользователю придется открыть это приложение, потому что WP7 SDK не позволяет вашему приложению запускаться в фоновом режиме / запускаться автоматически после push-уведомления получено.

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

Как я уже сказал, он будет работать только во время работы вашего приложения (проверьте жизненный цикл приложения, если вы его еще не знаете), WP7 не позволяет приложениям работать в фоновом режиме, что является серьезным ограничением, IMHO.

Удачи, Оскар

...