Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma popisuje, jak uživatelům pomoct pokračovat v tom, co dělali ve vaší aplikaci na počítači a na různých zařízeních.
Poznámka:
Od července 2021 už uživatelé, kteří mají historii aktivit synchronizovanou na svých zařízeních s Windows prostřednictvím svého účtu Microsoft (MSA), už nebudou mít možnost nahrát novou aktivitu na časovou osu. Pořád budou moct používat časovou osu a uvidí historii svých aktivit (informace o nedávných aplikacích, webech a souborech) na místním počítači. Účty připojené k AAD nebudou ovlivněné.
Aktivity uživatelů a časová osa
Náš čas se každý den rozprostírá na více zařízeních. Náš telefon můžeme používat na autobusu, počítači během dne a pak na telefonu nebo tabletu večer. Počínaje Windows 10 buildem 1803 nebo novějším, vytvoření uživatelské aktivity zobrazí tuto aktivitu na časové ose Windows a ve funkci Pokračovat s Cortanou tam, kde jsem skončil. Časová osa je detailní a přehledné zobrazení úkolů, které využívá uživatelské aktivity k chronologickému zobrazení toho, na čem jste pracovali. Může také zahrnovat to, na čem jste pracovali na různých zařízeních.
Podobně propojení telefonu s počítačem s Windows vám umožní pokračovat v tom, co jste dělali dříve na zařízení s iOSem nebo Androidem.
Představte si userActivity jako něco konkrétního, na čem uživatel pracoval ve vaší aplikaci. Pokud například používáte čtečku RSS, informační kanál, který čtete, může být reprezentován jako UserActivity. Pokud hrajete hru, UserActivity může být level, který právě hrajete. Pokud posloucháte hudební aplikaci, může UserActivity být playlist, který právě posloucháte. Pokud pracujete na dokumentu, userActivity může být místo, kde jste na něm přestali pracovat, a tak dále. Stručně řečeno, UserActivity představuje cíl v rámci vaší aplikace, aby uživatel mohl pokračovat v tom, co dělal.
Když se spojíte s UserActivity voláním UserActivity.CreateSession, systém vytvoří záznam historie označující počáteční a koncový čas pro tuto UserActivity. Při opětovném zapojení userActivity v průběhu času se pro ni zaznamená více záznamů historie.
Přidání uživatelských aktivit do aplikace
UserActivity je jednotka zapojení uživatelů ve Windows. Má tři části: identifikátor URI použitý k aktivaci aplikace, do které aktivita patří, vizuály a metadata popisují aktivitu.
- Aktivační identifikátor slouží k obnovení aplikace s konkrétním kontextem. Tento odkaz obvykle používá formu obslužné rutiny protokolu pro schéma (například "my-app://page2?action=edit") nebo AppUriHandler (například
http://contoso.com/page2?action=edit). - VisualElements zveřejňuje třídu, která uživateli umožňuje vizuálně identifikovat aktivitu s názvem, popisem nebo prvky adaptivní karty.
- Obsah je místo, kde můžete ukládat metadata pro aktivitu, která se dají použít k seskupení a načítání aktivit v určitém kontextu. Často má podobu dat https://schema.org.
Chcete-li přidat UserActivity do vaší aplikace:
- Generujte objekty UserActivity, když se v aplikaci změní kontext uživatele (například navigace na stránce, nová úroveň hry atd.)
- Naplňte objekty UserActivity minimální sadou požadovaných polí: ID aktivity, aktivační URIa UserActivity.VisualElements.DisplayText.
- Přidejte do aplikace vlastní obslužnou rutinu schématu, aby ji mohl znovu aktivovat UserActivity.
UserActivity je možné integrovat do aplikace s několika řádky kódu. Představte si například tento kód v MainPage.xaml.cs uvnitř třídy MainPage (poznámka: předpokládá using Windows.ApplicationModel.UserActivities;):
UserActivitySession _currentActivity;
private async Task GenerateActivityAsync()
{
// Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
UserActivityChannel channel = UserActivityChannel.GetDefault();
UserActivity userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");
// Populate required properties
userActivity.VisualElements.DisplayText = "Hello Activities";
userActivity.ActivationUri = new Uri("my-app://page2?action=edit");
//Save
await userActivity.SaveAsync(); //save the new metadata
// Dispose of any current UserActivitySession, and create a new one.
_currentActivity?.Dispose();
_currentActivity = userActivity.CreateSession();
}
První řádek výše uvedené metody GenerateActivityAsync() získá přístup k uživatelskému kanálu UserActivityChannel. Toto je informační kanál, do kterého se budou publikovat aktivity této aplikace. Další řádek dotazuje kanál aktivity pojmenované MainPage.
- Vaše aplikace by měla pojmenovat aktivity takovým způsobem, že se vygeneruje stejné ID pokaždé, když je uživatel v určité lokalitě v aplikaci. Pokud je vaše aplikace například založená na stránkách, použijte pro stránku identifikátor; pokud je založená na dokumentech, použijte název dokumentu (nebo hash názvu).
- Pokud je v kanálu existující aktivita se stejným ID, vrátí se tato aktivita z kanálu s
UserActivity.Statenastaveno na Publikováno. Pokud neexistuje žádná aktivita s tímto názvem, vrátí se nová aktivita sUserActivity.Statenastaveným na Nová. - Aktivity jsou omezeny na vaši aplikaci. Nemusíte se obávat toho, že by ID vaší aktivity kolidovalo s ID v jiných aplikacích.
Po získání nebo vytvoření UserActivity zadejte další dvě povinná pole: UserActivity.VisualElements.DisplayTexta UserActivity.ActivationUri.
Dále uložte metadata UserActivity voláním SaveAsync a nakonec CreateSession, která vrátí UserActivitySession.
UserActivitySession je objekt, který můžeme použít ke správě, když je uživatel skutečně zapojen do UserActivity. Měli bychom například zavolat Dispose() na UserActivitySession, když uživatel opustí stránku. V uvedeném příkladu výše také voláme Dispose() na _currentActivity před voláním CreateSession(). Je to proto, že jsme z _currentActivity udělali členské pole naší stránky a chceme zastavit všechny stávající aktivity před zahájením nové (poznámka: ? je null-podmíněný operátor, který testuje, zda je hodnota null, před provedením přístupu k členu).
Vzhledem k tomu, že je v tomto případě ActivationUri vlastní schéma, musíme také zaregistrovat protokol v manifestu aplikace. To se provádí v souboru PACKAGE.appmanifest XML nebo pomocí návrháře.
Pokud chcete provést změnu pomocí návrháře, poklikejte na soubor Package.appmanifest v projektu, aby se spustil návrhář, vyberte kartu Deklarace a přidejte definici protokolu . Jediná vlastnost, kterou je třeba zatím vyplnit, je Název. Měl by odpovídat identifikátoru URI, který jsme zadali výše. my-app
Teď musíme napsat nějaký kód, abychom aplikaci řekli, co dělat, když je aktivovaný protokolem. Přepíšeme metodu OnActivated v App.xaml.cs tak, že předáme identifikátor URI na hlavní stránku, například takto:
protected override void OnActivated(IActivatedEventArgs e)
{
if (e.Kind == ActivationKind.Protocol)
{
var uriArgs = e as ProtocolActivatedEventArgs;
if (uriArgs != null)
{
if (uriArgs.Uri.Host == "page2")
{
// Navigate to the 2nd page of the app
}
}
}
Window.Current.Activate();
}
Co tento kód dělá, zjistí, jestli byla aplikace aktivována prostřednictvím protokolu. Pokud tomu tak je, zjistí, co má aplikace udělat, aby obnovila úlohu, pro kterou je aktivována. Jako jednoduchá aplikace, jediná aktivita, kterou tato aplikace uskuteční, je přenesení vás na sekundární stránku při spuštění aplikace.
Použití adaptivních karet ke zlepšení prostředí časové osy
Aktivity uživatelů se zobrazují v Cortaně a časové ose. Když se aktivity zobrazí na časové ose, zobrazíme je pomocí architektury Adaptivní karta. Pokud pro každou aktivitu nezadáte adaptivní kartu, časová osa automaticky vytvoří jednoduchou kartu aktivity na základě názvu a ikony vaší aplikace, pole názvu a volitelného pole popisu. Níže je příklad obsahu adaptivní karty a karta, kterou vytvoří.
]
Příklad řetězce JSON datové části adaptivní karty:
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"backgroundImage": "https://winblogs.azureedge.net/win/2017/11/eb5d872c743f8f54b957ff3f5ef3066b.jpg",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Windows Blog",
"weight": "bolder",
"size": "large",
"wrap": true,
"maxLines": 3
},
{
"type": "TextBlock",
"text": "Training Haiti’s radiologists: St. Louis doctor takes her teaching global",
"size": "default",
"wrap": true,
"maxLines": 3
}
]
}
]
}
Přidejte datovou část adaptivních karet jako řetězec JSON do UserActivity takto:
activity.VisualElements.Content =
Windows.UI.Shell.AdaptiveCardBuilder.CreateAdaptiveCardFromJson(jsonCardText); // where jsonCardText is a JSON string that represents the card
Integrace mezi platformami a službami
Pokud vaše aplikace běží na různých platformách (například v Androidu a iOSu) nebo udržuje stav uživatele v cloudu, můžete publikovat UserActivities prostřednictvím Microsoft Graphu. Jakmile se vaše aplikace nebo služba ověří pomocí účtu Microsoft, stačí dvě jednoduchá volání REST, která generují objekty Aktivity a Historie pomocí stejných dat, jak je popsáno výše.
Shrnutí
Pomocí rozhraní USERActivity API můžete aplikaci zobrazit na časové ose a Cortaně.
- Další informace o UserActivity rozhraní API
- Podívejte se na ukázkový kód .
- Viz důmyslnější adaptivní karty.
- Publikujte UserActivity prostřednictvím iOS, Androidu nebo vaší webové služby přes Microsoft Graph.
- Přečtěte si další informace o Projectu Rome na GitHubu.
Klíčová rozhraní API
Související témata
- Aktivity uživatelů (dokumentace k Project Rome)
- adaptivní karty
- Ukázky vizualizéru adaptivních karet
- Zpracování aktivace identifikátoru URI
- Zapojování se do interakce s vašimi zákazníky na libovolné platformě pomocí Microsoft Graphu, Informačního kanálu o aktivitách a Adaptivních karet
- Microsoft Graph