![](/img/trans.png)
[英]How to use roaming settings between Windows 10 and XBOX One UWP app
[英]Alternative ways of roaming of app settings in uwp
Microsoft docs for unsupported features in windows 描述了 Package State Roaming 將被棄用,並將在以后的版本中刪除。 他們是否有任何替代方法可以在小型開發人員可以免費使用的設備之間同步設置?
我建議你看看 Microsoft Graph。 有了這個,您可以將數據存儲在用戶 OneDrive 上。 這是免費的,可用於其他平台。 沒有簡單而簡單的答案來讓它運行,但這些是您需要做的三件主要事情:
集成圖授權
在 UWP 中開始使用圖形和設置登錄等的一個很好的起點是這個項目:
https://github.com/CommunityToolkit/Graph-Controls
設置權限
下一步是授予您對 OneDrive 的應用程序訪問權限。 使用Files.ReadWrite.AppFolder
權限,您只需訪問 OneDrive 上的應用程序文件夾即可。 你可以在這里閱讀:
https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/special-folders-appfolder
請注意,企業帳戶目前不支持此權限級別。 有關於此的用戶語音輸入:
如果需要企業帳戶支持,您可以改用Files.ReadWrite
權限。 這使您可以訪問整個 OneDrive。 在編碼方面,這兩個選項之間沒有區別。
讀取和寫入文件
上面提到的項目使用的是 Graph SDK。 此處記錄了用於使用 OneDrive 的 rest API 以及如何將其與 SDK 一起使用的示例:
https://docs.microsoft.com/en-us/graph/api/resources/driveitem?view=graph-rest-1.0
下面是一些代碼,向您展示了如何做最重要的事情。 該代碼將數據存儲在子文件夾 Synchronizing1 中。 這使得將來可以在不破壞舊安裝的情況下以不同的方式存儲數據:
var provider = ProviderManager.Instance.GlobalProvider;
var client = provider.GetClient();
string path = "Synchronizing1";
Stream stream = ...;
// Upload or create a file
await client.Me.Drive.Special.AppRoot.ItemWithPath(System.IO.Path.Combine(path, fileName)).Content
.Request()
.PutAsync<DriveItem>(stream);
// Open a file for reading
var remoteStream = await client.Me.Drive.Special.AppRoot.ItemWithPath(System.IO.Path.Combine(path, fileName)).Content
.Request()
.GetAsync();
// Get all files form a folder
var childrenPage = await client.Me.Drive.Special.AppRoot.ItemWithPath(path).Children
.Request()
.GetAsync();
var children = childrenPage.ToList();
while (childrenPage.NextPageRequest != null)
{
childrenPage = await childrenPage.NextPageRequest.GetAsync();
children.AddRange(childrenPage.ToList());
}
該文檔說您可以使用Azure App Service 。
我曾經使用 OneDrive 跨設備漫游數據。 您需要先驗證您的應用以使用 OneDrive 空間,然后將用戶的數據存儲到他們自己的 OneDrive。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.