Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu başlığında, kullanıcıların kendi bilgisayarlarında ve cihazlarda uygulamanızda yaptıklarını sürdürmelerine nasıl yardımcı olundığı açıklanmaktadır.
Uyarı
Temmuz 2021'den itibaren, etkinlik geçmişi Microsoft Hesapları (MSA) aracılığıyla Windows cihazları arasında senkronize edilen kullanıcılar, Zaman Çizelgesi'ne yeni etkinlik yükleme seçeneğine artık sahip olmayacak. Zaman Çizelgesi'ni kullanmaya ve etkinlik geçmişini (son uygulamalar, web siteleri ve dosyalar hakkındaki bilgiler) yerel bilgisayarlarında görmeye devam edebilirler. AAD bağlantılı hesaplar etkilenmez.
Kullanıcı Etkinlikleri ve Zaman Çizelgesi
Her gün zamanımız birden çok cihaza yayılır. Otobüsteyken telefonumuz, gün boyunca bir bilgisayar, akşam ise bir telefon veya tablet kullanabiliriz. Windows 10 Derleme 1803 veya sonraki sürümlerden itibaren, bir Kullanıcı Etkinliği oluşturmak, bu etkinliğin Windows Zaman Çizelgesi'nde ve Cortana'nın Kaldığım Yerden Devam Et özelliğinde görünmesini sağlar. Zaman çizelgesi, üzerinde çalıştığınız şeyin kronolojik görünümünü göstermek için Kullanıcı Etkinlikleri'nin avantajlarından yararlanan zengin bir görev görünümüdür. Ayrıca, cihazlar arasında üzerinde çalıştığınız şeyleri de içerebilir.
Benzer şekilde, telefonunuzu Windows bilgisayarınıza bağlamak, daha önce iOS veya Android cihazınızda yaptığınız işlemlere devam etmenizi sağlar.
UserActivity, kullanıcının uygulamanızda üzerinde çalıştığı belirli bir şey olarak düşünün. Örneğin, RSS okuyucu kullanıyorsanız, okuduğunız akış UserActivity olabilir. Bir oyun oynuyorsanız, UserActivity
UserActivity.CreateSessionçağırarak bir UserActivity ile etkileşime geçtiğiniz zaman, sistem bu UserActivityiçin başlangıç ve bitiş zamanını belirten bir geçmiş kaydı oluşturur. Zaman içinde bu UserActivity ile yeniden etkileşim kurarken, bunun için birden çok geçmiş kaydı kaydedilir.
Uygulamanıza Kullanıcı Etkinlikleri ekleme
UserActivity, Windows'taki kullanıcı etkileşimi birimidir. Üç bölümden oluşur: etkinliğin ait olduğu uygulamayı etkinleştirmek için kullanılan URI, görseller ve etkinliği açıklayan meta veriler.
-
ActivationUri, uygulamayı belirli bir bağlamla sürdürmek için kullanılır. Bu bağlantı genellikle bir düzen (örneğin, "my-app://page2?action=edit") veya appUriHandler (örneğin,
http://contoso.com/page2?action=edit) için protokol işleyicisi biçimini alır. - VisualElements, kullanıcının başlık, açıklama veya Uyarlamalı Kart öğeleriyle bir etkinliği görsel olarak tanımlamasına olanak tanıyan bir sınıfı kullanıma sunar.
- Son olarak, İçerik, etkinlikleri belirli bir bağlam altında gruplandırmak ve almak için kullanılabilecek etkinliğin meta verilerini depolayabileceğiniz yerdir. Bu genellikle https://schema.org veri biçimini alır.
Uygulamanıza UserActivity eklemek için:
- Kullanıcınızın uygulama içindeki bağlamı değiştiğinde (sayfa gezintisi, yeni oyun düzeyi vb.), UserActivity nesneleri
oluşturun. - UserActivity nesnelerini gerekli en düşük alan kümesiyle doldurun: ActivityId, ActivationUrive UserActivity.VisualElements.DisplayText.
- Uygulamanıza, UserActivitykullanılarak yeniden etkinleştirilebilmesi için özel bir şema işleyicisi ekleyin.
UserActivity birkaç satırla bir uygulamaya entegre edilebilir. Örneğin, bu kodu MainPage sınıfının içindeki MainPage.xaml.cs düşünün (not: using Windows.ApplicationModel.UserActivities;varsayılır):
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();
}
Yukarıdaki GenerateActivityAsync() yöntemindeki ilk satır, kullanıcının UserActivityChannel'ini alır. Bu uygulamanın etkinliklerinin yayımlanacağı akış budur. Sonraki satır, MainPageadlı etkinliğin kanalını sorgular.
- Uygulamanızın etkinlikleri, kullanıcı uygulamada belirli bir konumda her bulunduğunda aynı kimlik oluşturulabilecek şekilde adlandırması gerekir. Örneğin, uygulamanız sayfa tabanlıysa, sayfa için bir tanımlayıcı kullanın; belge tabanlıysa, belgenin adını (veya adın karması) kullanın.
- Akışta aynı kimliğe sahip mevcut bir etkinlik varsa, bu etkinlik
UserActivity.StateYayımlananolarak ayarlanmış şekilde kanaldan döndürülür. Bu ada sahip bir etkinlik yoksa, yeni etkinlikUserActivity.State, yeniolarak ayarlanarak döndürülür. - Etkinlikler uygulamanızla sınırlıdır. Etkinlik kimliğinizin diğer uygulamalarda kimliklerle çakışması konusunda endişelenmeniz gerekmez.
KullanıcıEtkinliği
Ardından, UserActivity meta verilerini SaveAsyncçağırarak kaydedin ve CreateSession, bir UserActivitySessiondöndürür.
UserActivitySession, kullanıcı UserActivityile gerçekten etkileşime geçtiğinde yönetmek için kullanabileceğimiz nesnedir. Örneğin, kullanıcı sayfadan ayrıldığında Dispose() üzerinde çağırmalıyız. Yukarıdaki örnekte, Dispose()çağırmadan önce _currentActivity üzerinde CreateSession() de çağırırız. Bunun nedeni, _currentActivity'ı sayfamızın üye alanı yapmamız ve yenisini başlatmadan önce mevcut etkinliği durdurmak istememizdir (not: ?, üye erişimi gerçekleştirilmeden önce null kontrolü yapan null-koşullu işleç).
Bu durumda, ActivationUri özel bir şema olduğundan, protokolü uygulama bildirimine de kaydetmemiz gerekir. Bu işlem Package.appmanifest XML dosyasında veya tasarımcı kullanılarak yapılır.
Tasarımcıda değişiklik yapmak için projenizdeki Package.appmanifest dosyasına çift tıklayarak tasarımcıyı başlatın, Bildirimler sekmesini seçin ve Protokolü tanımı ekleyin. Şu anda doldurulması gereken tek özellik Name. Yukarıda belirttiğimiz URI ile eşleşmelidir, my-app.
Şimdi uygulamaya bir protokol tarafından etkinleştirildiğinde ne yapacağını söylemek için bazı kodlar yazmamız gerekiyor. URI'yi ana sayfaya geçirmek için App.xaml.cs'da OnActivated yöntemini geçersiz kılacağız, örneğin:
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();
}
Bu kodun yaptığı, uygulamanın bir protokol aracılığıyla etkinleştirilip etkinleştirilmediğini algılamaktır. Eğer öyleyse, uygulama etkinleştirildiği görevi sürdürmek için ne yapması gerektiğini kontrol eder. Basit bir uygulama olarak, bu uygulamanın tekrar başladığında yaptığı tek şey sizi ikincil sayfaya yerleştirmektir.
Zaman çizelgesi deneyimini geliştirmek için Uyarlamalı Kartlar kullanma
Kullanıcı Etkinlikleri Cortana ve Zaman Çizelgesi'nde görünür. Etkinlikler Zaman Çizelgesi'nde görüntülendiğinde, bunları Uyarlamalı Kart çerçevesini kullanarak görüntüleriz. Her etkinlik için uyarlamalı bir kart sağlamazsanız Zaman Çizelgesi, uygulama adınız ve simgeniz, başlık alanı ve isteğe bağlı açıklama alanı temelinde otomatik olarak basit bir etkinlik kartı oluşturur. Aşağıda örnek bir Uyarlamalı Kart yükü ve ürettiği kart verilmiştir.
]
Örnek uyarlamalı kart yükü JSON dizesi:
{
"$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
}
]
}
]
}
Uyarlamalı Kartlar yükünü JSON dizesi olarak UserActivity'ye şöyle ekleyin:
activity.VisualElements.Content =
Windows.UI.Shell.AdaptiveCardBuilder.CreateAdaptiveCardFromJson(jsonCardText); // where jsonCardText is a JSON string that represents the card
Platformlar arası ve Hizmetler arası tümleştirme
Uygulamanız platformlar arası çalışıyorsa (örneğin Android ve iOS'ta) veya bulutta kullanıcı durumunu koruyorsa UserActivities'i Microsoft Grapharacılığıyla yayımlayabilirsiniz. Uygulamanızın veya hizmetinizin kimliği bir Microsoft Hesabı ile doğrulandıktan sonra, yukarıda açıklanan verileri kullanarak Etkinlik ve Geçmişi nesneleri oluşturmak için yalnızca iki basit REST çağrısı gerekir.
Özet
Uygulamanızın Zaman Çizelgesi'nde ve Cortana'da görünmesini sağlamak için UserActivity API'sini
- UserActivity API hakkında daha fazla bilgi edinin
örnek koduna göz atın. - Daha gelişmiş Uyarlamalı Kartlar için bkz. .
- iOS, Android veya web hizmetinizden UserActivity'i Microsoft Grapharacılığıyla yayımlayın.
- GitHub
Project Rome hakkında daha fazla bilgi edinin.
Anahtar API'leri
İlgili konular
- Kullanıcı Etkinlikleri (Project Rome belgeleri)
- Uyarlamalı kartlar
- Uyarlamalı kartlar görselleştiricisi, örnekler
- URI etkinleştirmesini işleme
- Microsoft Graph, Etkinlik Akışı ve Uyarlamalı Kartlar kullanarak herhangi bir platformda müşterilerinizle etkileşim kurma
- Microsoft Graph