我有一个使用PeriodicTask后台代理的wp8应用程序。
任务更新多个实时图块的信息, 使用POST Client从我的服务器获取标题和图片网址以更新实时图块。
后台代理在调试和释放模式下工作得很好。使用XAPDeployement工具将.xap文件部署到我的设备中时,后台代理也可以正常工作。
然而,在提交给wp app store之后它无效,无论它是否为测试版。 如果应用程序是从商店下载的,后台代理程序从未运行过,几分钟后它就会被系统阻止。
由于XAP文件相同,怎么会出错?
代码的一部分:
public static Task<string> jsonPostClientTask(Dictionary<string, object> parameters, string url)
{
var results = new TaskCompletionSource<string>();
PostClient proxy = new PostClient(parameters);
try
{
proxy.DownloadStringCompleted += (sender, e) =>
{
if (e.Error == null)
{
string response = e.Result.ToString();
results.TrySetResult(response);
}
else
{
results.TrySetResult("");
results.TrySetException(e.Error);
}
};
proxy.DownloadStringAsync(new Uri(url));
}
catch
{
results.TrySetResult("");
}
return results.Task;
}
ScheduledAgent类:
protected override void OnInvoke(ScheduledTask task)
{
foreach (var tile in tileList)
{
string dataString = jsonPostClientTask(parameters, url);
//update tile in used
FlipTileData tileData = new FlipTileData()
{
BackContent = "string content",
WideBackContent = "string back content",
BackBackgroundImage = new Uri("http://xxxx.xxx/xxx.png", UriKind.RelativeOrAbsolute),
WideBackBackgroundImage = new Uri("http://xxxx.xxx/xxx.png", UriKind.RelativeOrAbsolute),
};
ShellTile primaryTile = ShellTile.ActiveTiles.First();
if (primaryTile != null)
primaryTile.Update(tileData);
}
}