Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Windows Share-kontraktet kan din app visas i Windows Share Sheet som en målapp– så att användarna kan dela innehåll från andra appar direkt till din. Den här artikeln beskriver hur du hanterar delat innehåll när din app har aktiverats som delningsmål.
Innan du följer stegen nedan, registrera appen som ett delningsmål:
- Paketerade appar: Se Integrera paketerade appar med Windows Dela för konfiguration av manifestregistrering och aktivering.
- Opaketerade appar: Se Integrera opaketerade appar med Windows Share om hur du tilldelar paketidentitet och registrerar appen som ett delningsmål.
Note
Aktiveringsmodellen för WinUI 3-skrivbordsappar skiljer sig från UWP. I WinUI 3 hanteras delningsaktivering via AppInstance.GetActivatedEventArgs() i appens startkod, inte via Application.OnShareTargetActivated(). API:erna ShareOperation och DataPackageView som beskrivs i den här artikeln fungerar på samma sätt när du har skaffat ShareTargetActivatedEventArgs. Se Integrera paketerade appar med Windows Share för Windows App SDK aktiveringsmönstret.
Välj dataformat som ska stödjas
När du deklarerar appen som ett resursmål i paketmanifestet anger du vilka filtyper och dataformat som appen kan ta emot. Endast appar som stöder de format som delas visas i resursdokumentet.
Du kan konfigurera typer som stöds på två sätt:
Använda Visual Studio-manifestredigeraren:
- Öppna
package.appxmanifesti Visual Studio. - Välj fliken Deklarationer .
- Välj Dela mål i listan Tillgängliga deklarationer och välj sedan Lägg till.
- Under Filtyper som stöds lägger du till filnamnstilläggen som appen hanterar (till exempel
.jpg,.png). Välj SupportsAnyFileType för att acceptera alla filtyper. - Under Dataformat lägger du till formatnamnen som appen hanterar (till exempel
Text,Uri,Bitmap).
Direkt i manifest-XML:
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Text</uap:DataFormat>
<uap:DataFormat>Uri</uap:DataFormat>
<uap:DataFormat>Bitmap</uap:DataFormat>
<uap:DataFormat>StorageItems</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Registrera dig endast för format som din app kan hantera. Om du deklarerar ett format men inte kan bearbeta det blir användarupplevelsen lidande.
Läs delade data
När din app aktiveras som ett delningsmål får du ett ShareOperation-objekt via ShareTargetActivatedEventArgs. Dess Data egenskap är en DataPackageView som exponerar det delade innehållet.
Använd Contains för att kontrollera vilka format som är tillgängliga och anropa sedan lämplig asynkron metod för att hämta data:
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text))
{
string text = await shareOperation.Data.GetTextAsync();
// Process the shared text.
}
if (shareOperation.Data.Contains(StandardDataFormats.WebLink))
{
Uri webLink = await shareOperation.Data.GetWebLinkAsync();
// Process the shared link.
}
if (shareOperation.Data.Contains(StandardDataFormats.StorageItems))
{
IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
// Process the shared files or folders.
}
Rapportdelningsstatus
Om bearbetningen av delade data tar tid– till exempel att ladda upp filer till en server – rapporterar du förloppet till systemet med hjälp av ShareOperation-statusmetoderna . På så sätt kan systemet hantera källappens livscykel på rätt sätt.
Anropa dessa metoder i följande ordning när delningsåtgärden fortskrider:
| Method | När du ska ringa |
|---|---|
| RapportStartad | Så snart din app börjar bearbeta delningen. Efter denna punkt bör du inte förvänta dig ytterligare användarinteraktion med delningsgränssnittet. |
| RapportdataHämtad | När appen har hämtat alla data som behövs från DataPackageView. Detta gör att systemet kan pausa eller avsluta källappen. |
| ReportSubmittedBackgroundTask | Om din app fortsätter att bearbetas i bakgrunden efter att delningsgränssnittet har stängts. |
| RapportSlutförd | När appen har slutfört bearbetningen av det delade innehållet. |
| RapporteraFel | Om ett allvarligt fel inträffar. Användaren ser meddelandet och delningsåtgärden avslutas. |
shareOperation.ReportStarted();
try
{
string text = await shareOperation.Data.GetTextAsync();
shareOperation.ReportDataRetrieved();
// Perform any additional processing here...
await ProcessSharedDataAsync(text);
shareOperation.ReportCompleted();
}
catch (Exception)
{
shareOperation.ReportError("Something went wrong. Please try again.");
}
Note
Anropa endast ReportError vid fel som är tillräckligt allvarliga för att avsluta delningsåtgärden. För återställningsbara fel kan du fortsätta bearbetningen utan att anropa ReportError.
Note
Det finns fall där en målapp kan anropa ReportDataRetrieved före ReportStarted– till exempel om din app hämtar data som en del av aktiveringshanteringen, men bara anropar ReportStarted senare när användaren uttryckligen väljer knappen Dela .
Returnera en snabblänk
När en användare delar innehåll till din app kan du returnera en QuickLink för att göra framtida delning snabbare. En QuickLink visas som en genväg i resursbladet, till exempel en kontaktgenväg som gör att användaren snabbt kan dela med kontakten igen utan att navigera i appens användargränssnitt.
A QuickLink har en rubrik, en ikon och ett ID. ID:t är appens interna identifierare för genvägen, till exempel ett kontakt-ID eller kontonamn. När användaren senare väljer en QuickLinkaktiverar systemet appen och skickar QuickLink tillbaka ID:t via ShareOperation.QuickLinkId.
Returnera en QuickLink genom att skicka den till ReportCompleted:
private async Task ReportCompletedWithQuickLink(
ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
QuickLink quickLinkInfo = new QuickLink
{
Id = quickLinkId,
Title = quickLinkTitle,
// QuickLink supported types are configured independently from the manifest.
SupportedFileTypes = { "*" },
SupportedDataFormats =
{
StandardDataFormats.Text,
StandardDataFormats.WebLink,
StandardDataFormats.Bitmap,
StandardDataFormats.StorageItems
}
};
StorageFile iconFile = await Windows.ApplicationModel.Package.Current
.InstalledLocation.CreateFileAsync(
"assets\\contact.png", CreationCollisionOption.OpenIfExists);
quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
shareOperation.ReportCompleted(quickLinkInfo);
}
Note
En QuickLink lagrar endast ID:t – inte associerade data. Din app ansvarar för att spara användardata (till exempel kontaktuppgifter) och hämta dem när aktiveras QuickLink via ShareOperation.QuickLinkId.
Se även
Windows developer