【问题标题】:Access to SMS and browser content tombstoning访问 SMS 和浏览器内容墓碑
【发布时间】:2011-10-22 22:16:58
【问题描述】:

WP7 新手在这里..
在我的应用程序中,我使用embedded web browser 控件来加载外部网页。

我在该应用程序中有一个基于 PIN 的验证步骤,其中涉及
1) 用户离开当前应用程序(在嵌入式网络浏览器中加载了外部网页)以启动 SMS 收件箱。
2) 用户阅读他刚刚收到的短信,其中有 PIN。我正在向用户发送这条短信。
3) 然后用户需要通过点击返回按钮恢复到原来的应用程序,输入他之前在 SMS 中收到的 PIN。

一旦用户进入 Step2,我的应用程序将进入后台,随后将被删除。 一旦用户进入 Step3,我想恢复应用程序状态(使用嵌入式 Web 浏览器控件),而无需再次发出新的 HTTP 请求来加载网页。

因此,考虑到给定的场景,我有以下两个问题 -
1)有没有更好的方法来做这一切,比如不必退出原始应用程序,仍然让用户阅读短信。 (即任何 api 来读取短信?)
2) 有没有办法序列化浏览器状态/保存整个网页(带有图像、css、js),这样当用户离开正在运行的应用程序时,整个网页可以完全按照原样呈现。

要点:
1)我只能使用短信作为沟通渠道。我不能使用原始推送通知通道之类的东西,它可以让我在不退出应用程序的情况下向用户显示 PIN。
2) 我的目标是 Windows phone 7.0 运行时,但如果 Windows Mango 更新中有更好的选择,请告诉我。

非常感谢任何形式的帮助。

更新: 添加了到嵌入式 Web 浏览器组件的链接。

【问题讨论】:

    标签: windows-phone-7 webbrowser-control tombstoning embedded-browser


    【解决方案1】:

    1) 没有任何 API 可让您从应用程序内部访问消息传递中心的内容。这是出于隐私目的而设置的。

    2) 默认情况下,Web 浏览器会保存其状态。因此,如果您离开您的应用程序,然后返回 - 相同的网页仍然存在,除非您在激活时明确重新导航

    【讨论】:

    • 感谢@Dennis 的回复。关于 2),那么当为具有嵌入式浏览器的页面调用 NavigatedTo 事件时,应在应用程序恢复时自动执行哪些代码。此外,我通过在变量中跟踪应用程序状态来测试您的方法,并且在应用程序恢复时不执行任何代码(在 Loaded、navigatedTo 事件处理程序中)。在这种情况下,嵌入式 Web 浏览器根本不显示任何页面。
    • 您是否在激活时执行任何代码? msdn.microsoft.com/en-us/library/…
    • 这是我为测试方法 2) 是否有效而编写的基本 POC 代码,正如您所指出的。您能否指出我做错了什么或遗漏了什么。 - pastebin.com/UgwCheem.
    • 您正在显式调用 WebBrowser 控件的 Navigate 方法。你不应该这样做。
    • 是的,但该代码仅在浏览器第一次加载时执行。当应用程序再次恢复时,该行将不会执行,因为我在 Application_Deactivated 事件处理程序中设置“重复”标志,当应用程序被停用时。
    【解决方案2】:

    1) 更好的方法是不要将网页嵌入到应用程序中。只需建立一个移动网站。如果所有功能都在网页中,则尝试将其放入应用程序中只会遇到问题。

    Web 浏览器控件并非旨在用于创建替代浏览器(这正是您正在做的事情)。

    2) 您可以尝试使用SaveToString() 方法在墓碑化时存储页面的状态,但这不允许修改页面,因为它已加载(包括任何动态更新或javascript 中的任何状态)。如果您有多个页面,您还需要分别维护内部 backstack 和每个页面的状态。

    简短回答:如果您想将应用程序逻辑放在 webBrowser 控件中,那么您不能支持逻辑删除。 Fast-App-Switching(在 Mango 中)部分解决了这个问题,但没有完全解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多