Nowe doświadczenie udostępniania w Creators Update

Nowe doświadczenie udostępniania w Creators Update

Autor: Damian Lisak

Opublikowano: 6/13/2017, 12:00 AM

Liczba odsłon: 3464

Na początku kwietnia bieżącego roku pojawia się wielka aktualizacja Creators Update. Jej cechą charakterystyczną są nie tylko nowe funkcje i aplikacje, których zadaniem jest tworzenie (np. Paint 3D), ale także poszerzona i ulepszona możliwość udostępniania. Microsoft włożył wiele pracy w to, aby każdy użytkownik Windows 10 mógł w łatwiejszy i szybszy sposób dzielić się swą twórczością.

Gigant poczynił wiele zmian w funkcji, która jest uzupełnieniem wizji kreatywnej aktualizacji. W końcu nie każdy tworzy tylko dla siebie. Spora część społeczeństwa uwielbia dzielić się (czasem aż nadto) wszelakimi objawami swojej twórczości na równie wszelakie sposoby, np. portale społecznościowe takie jak Facebook; MMS-y, itd. Dlatego gigant wyszedł naprzeciw obecnemu trendowi (nad)twórczości, udoskonalając dostępną już wcześniej funkcję. Oprócz samego odświeżenia doświadczenia z Udostępnij, gigant dodał nowe funkcje i możliwości dla programistów, m.in. poprzez udostępnienie przykładowego kodu źródłowego na GitHubie. Oto zmiany, jakie pojawiły się wraz z najnowszą dużą aktualizacją.

Zmiana wyglądu interfejsu użytkownika

Pierwszą zmianą jaką może doświadczyć użytkownik, jest zmiana wyglądu ikony Udostępnij. Microsoft w trakcie produkcji dużej aktualizacji zdał sobie sprawę z tego, że poprzednia ikona nie do końca odzwierciedla spełnianą przez siebie funkcję. Gigant na swoim blogu Microsoft Design dość skrupulatnie opisał co było tego powodem. Mówiąc krótko, ikony są w pewnym sensie interpretacyjnymi metaforami. Dotychczasowy design ikony nie kojarzył się zbytnio z tym, że za jej pomocą użytkownik będzie mógł podzielić się swoim dziełem ze światem zewnętrznym. Dlatego też dokonano zmiany. I słusznie.

Nowa ikona funkcji Udostępnij

Nowa ikona (zwłaszcza w porównaniu do poprzedniej) rewelacyjnie odzwierciedla zadanie, do którego została stworzona. Zmiana oczywiście będzie dostępna dopiero po zainstalowaniu najnowszej aktualizacji. Różnicę można zobaczyć między innymi w Microsoft Edge.

Funkcja Udostępnij w Edge

Jeżeli chodzi o deweloperów, nic się nie zmieniło. Kod jest ten sam jak w przeszłości oraz tak samo działa – otwiera panel Udostępniania z listą aplikacji, które możemy wybrać. Kiedy wybierzemy np. Facebooka czy też Pocztę, funkcja uruchomi odpowiednią aplikację z załączoną treścią, którą chcemy się podzielić.

Panel aplikacji Udostępnij

Aplikacje ze Sklepu Windows

Korzystając z funkcji Udostępnij, chociażby w Edge, łatwo dostrzec w panelu aplikacji do wyboru, u dołu, dodatkowy odnośnik – Pobierz aplikacje ze Sklepu. Jak łatwo się domyślić, przekierowuje on do Sklepu Windows, gdzie aplikacja uruchamia się z ustawionym filtrem ukazującym jedynie takie aplikacje, jakie współpracują z omawianą funkcją. Tym sposobem użytkownicy chcący coś opublikować, w prosty sposób mogą pobrać i zainstalować wybraną aplikację. Co ciekawe, Microsoft zastosował także aplikacje promowane. Oznacza to, że na panelu wyboru aplikacji może się pojawić aplikacja (np. Messenger), której nie mamy zainstalowanej. Celem tej decyzji jest to, aby użytkownicy nie zrażali się do funkcji ze względu na to, że nie widzą oni na liście swojej ulubionej aplikacji, komunikatora czy portalu. Jeżeli użytkownik kliknie promowaną aplikację, która nie jest zainstalowana, zostanie on automatycznie przekierowany do witryny z możliwością jej pobrania i zainstalowania. Co więcej, promowane aplikacje są wybierane w oparciu o ich popularność w danym rejonie. Ponadto, aplikacje automatycznie zmieniają kolejność wg korzystanie z nich przez użytkownika.

Aplikacje z funkcją Udostępnij

Funkcje programisty

Share Providers (dostawcy obsługi udostępniania)

Microsoft chce jeszcze bardziej ułatwić użytkownikom znajdowanie aplikacji i obiektów, którymi mogą się dzielić. Share Provider to obiekt zdefiniowany przez aplikację, która pozwala deweloperowi na dołączenia treści bezpośrednio do wybranej aplikacji jako część doświadczeń Udostępniania. Oznacza to, że jeżeli dana aplikacja lub jej zachowanie nie jest obecnie dostępne w ekosystemie Windows, deweloper może dodać tę aplikację dając użytkownikom możliwość udostępniania treści. Ponadto, jeżeli aplikacja jest dostępna w systemie Windows, ale istnieją webowe SDK, które oferują bogatszą funkcjonalność, deweloper może się zdecydować na dołączenie Share Provider w celu zbudowania pożądanego doświadczenia.

Aby dodać Share Provider, należy wpierw dodać metodę ShareProviderRequested do metody OnNavigatedTo na swojej stronie:

// Add Share Events in OnNavigatedTo
protected override void OnNavigatedTo(NavigationEventArgs e)

// Get the current Data Transfer manager
this.manager = DataTransferManager.GetForCurrentView();
// Setup Data package in DataRequested event as before
manager.DataRequested += OnDataRequested;
// Register for ShareProvidersRequested event
manager.ShareProvidersRequested += OnShareProvidersRequested;
}

Następnie należy zająć się wywołanym zdarzeniem dodając Share Providers do listy widniejącej w argumentach zdarzenia:

// Handle this event to add a Share Provider
private void OnShareProvidersRequested(DataTransferManager s,
ShareProvidersRequestedEventArgs e)
{
// Deferral included for any long running tasks
Deferral d = e.GetDeferral();
// Show "Copy Link" Share Provider only if the shared content includes a link
if (e.Data.Contains(StandardDataFormats.WebLink))
{
// Specify icon for the Share Provider
RandomAccessStreamReference copyIcon =
RandomAccessStreamReference.CreateFromUri(new Uri(@"ms-
appx:///Assets/StoreLogo.png"));
// Create the Copy Link Share Provider with Display Name, icon and callback function
ShareProvider copyProvider = new ShareProvider("Copy Link", copyIcon,
Windows.UI.Colors.Red, OnCopySelected);
// Add to the list of Share Providers and pass them to DataTansferManager
e.Providers.Add(copyProvider);
}
// Complete Deferral
d.Complete();
}

Można tu zauważyć Copy Link jako treść udostępniania, która została dodana do okna dialogowego Udostępnij przy użyciu fragmentów kodu przedstawionych powyżej. Do zaimplementowania Share Provider, wystarczy dodać funkcję Callback określoną podczas tworzenia projektu. Poniższy kod zabiera WebLink z ShareDataPackage i umieszcza go w schowku.

// Implement Copy Link ShareProvider
private async void OnCopySelected(ShareProviderOperation operation)
{
Uri copyURI = await operation.Data.GetWebLinkAsync();
DataPackage package = new DataPackage();
package.SetText(copyURI.ToString());
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (CoreDispatcherPriority.Normal,
() =>
{
Clipboard.SetContent(package);
});
}

Ukończenie udostępniania

Microsoft otrzymał wiele informacji z aplikacji źródłowych, dzięki którym mógł dowiedzieć się więcej na temat treści, którymi dzielą się użytkownicy za pomocą aplikacji. Często treść, którą użytkownicy udostępniają, jest ważna lub cenna, dlatego gigant chce dać deweloperom informacje o zawartości oraz celu udostępniania. Aby było to możliwe, dodano nowe zdarzenie OnShareOperationCompleted. Teraz aplikacja może subskrybować to zdarzenie w celu zdobycia informacji na temat celu udostępnienia oraz zbudowania doświadczenia w kontekście treści udostępnianych w przeszłości.

Aby to wykorzystać, należy wpierw dodać ShareCompleted w metodzie OnDataRequested w implementacji udostępniania. Zostanie on wywołany gdy cel wywoła ReportCompleted.

private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
// Get the current DataRequest
DataRequest request = args.Request;
// Setup sample share data
request.Data.Properties.Title = "Share Link Example";
request.Data.SetText("Hello World");
request.Data.SetWebLink(new Uri("http://www.bing.com"));
// Register Share Operation Completed
request.Data.ShareCompleted += OnShareCompleted;
}

Następnie należy wywołać to zdarzenie, aby uzyskać wszystkie informacje na temat udostępnianej zawartości. Ta prosta implementacja wyświetla w konsoli debugowania tylko informacje na temat celu.

// Use the OnShareCompleted event to get information about successful shares
private void OnShareCompleted(DataPackage sender, ShareCompletedEventArgs args)
{
Debug.WriteLine("Share Completed");
Debug.WriteLine("AUMID: " + args.ShareTarget.AppUserModelId);
Debug.WriteLine("Share Provider: " + args.ShareTarget.ShareProvider.Title);
}

Co dalej?

Dla Microsoftu Udostępnianie jest ważnym elementem systemu Windows 10, czego dowodem jest Creators Update, w którym owa funkcja została mocno rozpowszechniona i ulepszona. Oprócz samych użytkowników, gigant zachęca także deweloperów do implementowania tej funkcji do swoich aplikacji. W zasadzie jedyne czego jeszcze brakuje do pełnej funkcjonalności Udostępnij jest funkcja My People, której niestety można się spodziewać dopiero w Redstone 3.