1

我有一个使用 PeriodicTask 后台代理的 wp8 应用程序。

该任务更新多个动态磁贴的信息,使用POST 客户端从我的服务器获取标题和图像 url 以更新动态磁贴。

后台代理在调试和发布模式下工作得很好。当使用 XAPDeployement 工具将 .xap 文件部署到我的设备中时,后台代理也可以完美运行。

但是,无论是不是beta版本,提交到wp应用商店后都无法使用。如果应用是从商店下载的,后台代理从来没有工作过,几分钟后就被系统阻止了。

由于 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);
        }


    }
4

0 回答 0