0

針對編寫爲Windows通用應用程序的LOB應用程序,我想在安裝應用程序時註冊後臺任務,無需啓動它。從我所看到的文檔中,我可以看到Package.appxmanifest中的預裝配置功能,我發現this針對UWP應用程序的預裝配置任務不運行

但是,使用此擴展時,後臺任務未註冊,也不能看到它運行任何內容。

這裏是Package.appxmanifest我的預安裝構造擴展:

<Extension Category="windows.preInstalledConfigTask" EntryPoint="Foo.BackgroundTasks.DefaultRegistrationBackgroundTask" /> 

要驗證任務和入口點的設置是否正確,我註冊它使用更新任務能力,增加了應用程序版本,再次部署它,後臺任務已註冊,並且所有內容都按預期工作。

這裏是我的更新任務擴展在Package.appxmanifest:

<Extension Category="windows.updateTask" EntryPoint="Foo.BackgroundTasks.DefaultRegistrationBackgroundTask" /> 

是對預安裝配置任務某種程度上限制或需要其他配置?我該如何調試這類問題?沒有斷點。

Foo.BackgroundTasks.DefaultRegistrationBackgroundTask的代碼:

public sealed class DefaultRegistrationBackgroundTask : IBackgroundTask 
{ 
    private BackgroundTaskDeferral _backgroundTaskDeferral; 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 

     // Deferral is required if code uses any async call 
     _backgroundTaskDeferral = taskInstance.GetDeferral(); 

     // Location Services 
     BackgroundTaskHelper.RegisterBackgroundTask("Foo.BackgroundTasks.LocationBackgroundTask", 
      "Foo.LocationBackgroundTask", 
      new SystemTrigger(SystemTriggerType.UserPresent, false), 
      null); 

     // Referal releases 
     _backgroundTaskDeferral.Complete(); 
    } 
} 

回答

1

PreinstalledConfigTask僅限於預裝應用,即附帶從OEM或Microsoft的設備的應用程序。它不會觸發用戶從商店獲取的應用程序(或通過側載)。

+0

謝謝!那麼沒有用戶啓動應用程序,沒有機會註冊後臺任務? 我們可能有機會在首次登錄時自動啓動應用程序 - 預先啓動會是一個選項嗎? – BenAffleckIsBatman

+0

正確,如果沒有應用程序至少啓動一次,就無法運行應用程序代碼。 UpdateTask在這裏是一個例外。歡迎您在UserVoice上登錄功能建議:https://wpdev.uservoice.com/forums/110705-universal-windows-platform –

+0

這樣的功能確實會啓用新的用例。我將在UserVoice上記錄它。謝謝。假設我們完全控制操作系統,因爲它是一個託管客戶端,您是否看到其他方式?例如自動啓動和預啓動?當我們部署操作系統時,有沒有辦法將此應用程序註冊爲OEM應用程序並使用上述任務或如何到達那裏? – BenAffleckIsBatman

相關問題