Доступ к захоронению содержимого SMS и браузера

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

У меня есть этап проверки на основе PIN-кода в этом приложении, который включает в себя
1) Пользователь покидает текущее приложение (которое имеет внешнюю веб-страницу, загруженную во встроенный веб-браузер) для запуска папки «Входящие SMS». .
2) Пользователь читает только что полученное SMS с PIN-кодом. Я отправляю это SMS пользователю.
3) Затем пользователю необходимо вернуться к исходному приложению, нажав кнопку «Назад», чтобы ввести PIN-код, который он получил в SMS ранее.

Как только пользователь вводит Step2, мое приложение перейдет в фоновый режим, а затем будет захоронено. После того, как пользователь перейдет к шагу 3, я хочу восстановить состояние приложения (с помощью встроенного элемента управления веб-браузером) без повторного нового HTTP-запроса для загрузки веб-страницы.

Итак, имея в виду данный сценарий, у меня есть следующие два вопроса -
1) Есть ли лучший способ сделать все это, например, не выходить из исходного приложения и по-прежнему позволять пользователь прочитал смс. (т.е. любой API для чтения смс?)
2) Есть ли способ сериализовать состояние браузера/сохранить всю веб-страницу (с изображениями, css, js), чтобы вся веб-страница могла отображаться точно так, как она была , когда пользователь вышел из работающего приложения.

Важные моменты:
1) В качестве канала связи я могу использовать только SMS. Я не могу использовать что-то вроде необработанного канала push-уведомлений, который мог бы позволить мне показать PIN-код пользователю, не выходя из приложения.
2) Я ориентируюсь на среду выполнения Windows phone 7.0, но если есть лучший вариант, доступный в Windows Mango обновление, пожалуйста, сообщите мне.

Любая помощь приветствуется.

Обновление: добавлена ​​ссылка на встроенный компонент веб-браузера.


person Ashish    schedule 09.08.2011    source источник


Ответы (2)


1) Нет API, который позволил бы вам получить доступ к содержимому концентратора сообщений из вашего приложения. Это сделано в целях конфиденциальности.

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

person Den Delimarsky    schedule 09.08.2011
comment
Спасибо за ответ @Dennis. О 2). Итак, какой код должен выполняться, когда событие NavigatedTo вызывается для страницы со встроенным браузером автоматически при возобновлении работы приложения. Кроме того, я проверил ваш подход, отслеживая состояние приложения в переменной и не выполняя никакого кода (в обработчике событий Loaded, navigationdTo) при возобновлении работы приложения. В этом случае встроенный веб-браузер вообще не показывает никаких страниц. - person Ashish; 09.08.2011
comment
Вы выполняете какой-либо код при активации? msdn.microsoft.com /en-us/библиотека/ - person Den Delimarsky; 09.08.2011
comment
Это базовый код POC, который я написал, чтобы проверить, работает ли подход 2), как вы указали. Не могли бы вы указать, если я что-то делаю неправильно или что-то упускаю. - pastebin.com/UgwCheem. - person Ashish; 09.08.2011
comment
Вы явно вызываете метод Navigate для элемента управления WebBrowser. В вашем случае этого делать не следует. - person Den Delimarsky; 09.08.2011
comment
Да, но этот код выполняется только при первой загрузке браузера. Эта строка не будет выполняться, когда приложение снова возобновит работу, так как я устанавливаю повторный флаг в обработчике событий Application_Deactivated, когда приложение деактивируется. - person Ashish; 09.08.2011
comment
Я специально проверил это поведение на нескольких физических устройствах, а также в эмуляторе — страница сохраняется в браузере, даже когда я выхожу из самого приложения. Какую веб-страницу вы пытаетесь открыть? - person Den Delimarsky; 09.08.2011
comment
это может быть любая внешняя веб-страница (например, www.google.com). Если я вообще не выполняю какой-либо код, встроенный компонент браузера на странице становится для меня пустым. Кстати, раздел комментариев здесь становится немного переполненным. Можем ли мы пообщаться в чате переполнения стека здесь - chat. stackoverflow.com/rooms/2289/ - person Ashish; 09.08.2011

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

Элемент управления веб-браузером не предназначен для создания альтернативного браузера (что вы и делаете).

2) Вы можете попробовать использовать SaveToString() для сохранения состояния страницы при захоронении, но это не позволяет вносить изменения в страницу с момента ее загрузки (включая что-либо динамически обновляемое или любое состояние в javascript). Если у вас есть несколько страниц, вам также необходимо поддерживать внутреннюю стопку и состояние каждой страницы отдельно.

Краткий ответ: если вы хотите поместить логику своего приложения в элемент управления webBrowser, вы не можете поддерживать захоронение. Fast-App-Switching (в Mango) частично решает эту проблему, но не полностью.

person Matt Lacey    schedule 09.08.2011