1

我有一個Windows Phone 8應用程序,我最近升級到8.1 Silverlight。我想使用新的圖塊模板。現在我有一個使用ShellTile的ScheduledTaskAgent。Windows Phone 8.1活動平鋪後臺任務

爲了使用新的實時切片,我在WMAppManifest.xml中將通知服務更改爲WNS。我刪除了代碼以註冊舊的後臺任務,並將此代碼來代替:

var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); 
if (backgroundAccessStatus == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity || 
    backgroundAccessStatus == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity) 
{ 
    foreach (var task in BackgroundTaskRegistration.AllTasks) 
    { 
     if (task.Value.Name == "LiveTileBackgroundTask") 
     { 
      task.Value.Unregister(true); 
     } 
    } 

    BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); 
    taskBuilder.Name = "LiveTileBackgroundTask"; 
    taskBuilder.TaskEntryPoint = "BackgroundTasks.LiveTileBackgroundTask"; 
    taskBuilder.SetTrigger(new TimeTrigger(15, false)); 
    var registration = taskBuilder.Register(); 
} 

我創建了Windows Phone 8.1的Windows運行時組件稱爲BackgroundTasks包含BackgroundTask稱爲LiveTileBackgroundTask

public sealed class LiveTileBackgroundTask : IBackgroundTask 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 

     const string xml = "<tile>" 
          + "<visual>" 
          + "<binding template='TileWideText01'>" 
          + "<text id='1'>Text Field 1 (larger text)</text>" 
          + "<text id='2'>Text Field 2</text>" 
          + "<text id='3'>Text Field 3</text>" 
          + "<text id='4'>Text Field 4</text>" 
          + "<text id='5'>Text Field 5</text>" 
          + "</binding> " 
          + "</visual>" 
          +"</tile>"; 

     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(xml); 

     TileNotification tileNotification = new TileNotification(doc); 
     TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification); 

     deferral.Complete(); 
    } 
} 

我加在我的Windows Phone項目中對此程序集的引用。

我還在我的Package.appxmanifest中添加了後臺任務聲明,它具有BackgroundTasks.LiveTileBackgroundTask作爲入口點。我選擇了定時器和系統事件作爲支持的任務類型。

當我運行應用程序,但沒有任何反應。不顯示活動磁貼。我跑過後臺任務,一切都順利,沒有任何例外。

+0

嗨,你嘗試只更新前景瓷磚而不是後臺任務?我問的原因是因爲我甚至無法在前臺更新磁貼... –

+0

嗨,我試過了,它也沒有工作。 –

+0

請看看這一個http:// stackoverflow。com/questions/23589479/new-live-tiles-dont-work-in-windows-phone-silverlight-8-1-apps –

回答

1

連續後臺執行,不支持的Silverlight 8.1 應用

的Windows Phone 8級的應用程序可以繼續 用戶導航在一定條件下的應用走在後,在後臺運行。這個 功能不適用於Silverlight 8.1應用程序。如果你需要這個 功能,你應該繼續使用Windows Phone 8應用程序。欲瞭解更多 信息,請參閱在後臺運行定位追蹤應用的 的Windows Phone 8

Platform compatibility and breaking changes for Windows Phone Silverlight 8.1 apps

的Windows Phone 8.1的Windows運行時組件只能隨着Windows Phone 8.1運行時(商店)的應用程序中使用

+0

這不是這個。這不是一個「連續的背景」任務,它只是一個正常的後臺任務,應該定期執行。它只是這樣做的,但瓦片不會更新。如果它不兼容,它將無法編譯。 我應該可以在WP8.1 Silverlight中使用新的圖塊模板,但是我不認爲它們會使用舊的ScheduledTaskAgent。 –

+1

在批評之前,最好先閱讀鏈接中的內容,然後再看下一段。您是否將舊的ScheduledTaskAgent升級到8.1?並且從使用Windows Phone 8.1運行時組件的Windows Phone Silverlight 8.1應用程序這個概念開始......這同樣是「我希望使用新的平鋪模板」,而這隻適用於RT平臺對於Silverlight – IceFog

+0

「僅適用於RT平臺不適用於Silverlight」 - >抱歉,但事實並非如此。 Microsoft內的多個人員明確確認WP8.1 SL_can_使用新的切片模板。 –

3

你說「沒有活動瓷磚出現」。您發佈的代碼不會創建實時平鋪 - 它只會更新一個。您必須手動固定它 - 主代碼不能通過代碼固定。

如果這不是問題,也許你不看寬的瓷磚?這個模板適合寬廣的平鋪,所以方形平鋪不會被這個更新。我建議使用NotificationsExtensions庫。它最初用於Windows應用商店應用,但我認爲它也適用於WP。 (我已經使用了它,但只是爲了測試,不是真實的,所以可能會有問題。)它允許您輕鬆地指定寬方形和方形瓷磚的模板和參數。

最後,要獲得寬廣的圖塊,您必須手動編輯Package.appxmanifest文件。您必須將Wide310x150Logo屬性添加到DefaultTile元素。

這就是我能想到的。希望能幫助到你。

相關問題