我正在尝试为windows phone 7编写最基本的应用程序,并希望能够将文件(特别是XML,以防更改任何内容)发送到我的应用程序。目前我有一个WCF服务设置,所以我可以通过它发送推送通知。问题是我可以通过推送通知发送的原始数据量有限制。
我的解决方案是发送初始推送通知(tile或raw)以提醒我的应用程序我要向其发送文件,然后使应用程序以某种方式与服务器通信(一切都在我的个人计算机上)顺便说一句 - 我只想弄清楚它是如何工作的 - 应用程序将从中接收/下载文件。
实现这一目标的最简单方法是什么?请注意,我并不关心安全性或类似的事情。
澄清 - 问题非常重要:如何将文件从/向服务器传输到手机?假设其他所有内容都已处理 - 应用程序已启动并正在运行,并且用户已授予或将授予他可能允许的所有可能内容的权限。
答案 0 :(得分:4)
不幸的是,推送通知(包括HTTP标头)的总大小为1kb。这意味着它不能用于发送大量数据。
不是发送整个文件,而是发送一个通知(原始或吐司 - 视情况而定),应由应用程序将其视为触发器,从服务器中检索新文件/数据/任何内容。当您的应用启动时,也可能需要检查新消息。但是,如果您启动应用程序时它将通知服务器已准备好接收原始通知,并且将发送此类消息以指示新内容可用,则可能无需添加此额外检查。
要将文件传输到手机或从手机传输文件,您需要使用HttpWebRequest或WebClient,因为这是在设备上使用HTTP的唯一方法,HTTP是目前唯一可用于传输的协议数据
虽然WebClient
似乎比HttpWebRequest
更容易使用,但它不太灵活,会在UI线程上自动执行回调,如果你在后台下载文件,你几乎肯定不会不想要这个。
无法将文件传输到已连接的PC,也无法将其专门用于您的应用。
答案 1 :(得分:0)
首先:您将无法自动执行此方法 - 用户必须打开您的应用才能执行此操作,因为WP7 SDK不允许您的应用在后台运行/一旦推送通知自动启动收到了。
此时与服务器通信的唯一方法是Web服务。如果我是你,我会检查应用程序启动后可用的新信息,如果有新信息,我会调用一个或多个Web服务,它会返回我需要的所有信息。 如果需要,您可以使用计时器定期检查信息。
正如我所说,它只会在您的应用运行时运行(如果您还不知道它,请查看应用生命周期),WP7不允许应用在后台运行,这是一个严重的限制恕我直言。< / p> 祝你好运, 奥斯卡
答案 2 :(得分:0)
也许有点偏离主题,但当我在WP7应用程序中考虑文件共享时,我发现了两种方法:
答案 3 :(得分:0)
您可以使用WebClient类和DownloadStringAsync方法从Web服务下载数据。 一个很好的例子是Scott Guthrie's Twitter app from MIX10。
乔治