So wird’s gemacht: Empfangen eines Links (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Ein Link ist ein Datenformat, das gerne von Benutzern geteilt wird. Gelegentlich gibt ein Benutzer einen Link direkt frei (z. B. in einem Artikel auf einer Website). Wenn Benutzer HTML oder Inhalte freigeben, die möglicherweise online verfügbar sind, ist die Unterstützung von Links als alternative Option hilfreich.

Dieses Thema erläutert das Empfangen eines einzelnen Links, der in einer Quell-App freigegeben wird.

Wissenswertes

Technologien

Voraussetzungen

  • Sie sollten mit Visual Studio und den zugehörigen Vorlagen vertraut sein.
  • Sie sollten mit JavaScript vertraut sein.

Anweisungen

Schritt 1: Unterstützung des Freigabe-Vertrags

Bevor die App freigegebene Inhalte empfangen kann, müssen Sie deklarieren, dass sie den Zielfreigabe-Vertrag unterstützt. Dieser Vertrag informiert das System darüber, dass die App für den Empfang von Inhalten verfügbar ist. Wenn Sie die App mithilfe einer Microsoft Visual Studio-Vorlage erstellen, gehen Sie wie folgt vor, um den Freigabe-Vertrag zu unterstützen:

  1. Öffnen Sie die Manifestdatei (package.manifest) in der Entwurfsansicht.
  2. Öffnen Sie die Registerkarte Deklarationen.
  3. Wählen Sie in der Liste Verfügbare Deklarationen die Option Zielfreigabe aus.
  4. Klicken Sie auf Hinzufügen, um die Unterstützung für den Zielfreigabe-Vertrag in Ihrer App hinzuzufügen.

Um Links zu unterstützen, müssen Sie angeben, dass die App das URI-Format unterstützt:

  1. Öffnen Sie die Manifestdatei.
  2. Klicken Sie im Abschnitt Datenformate auf Neu hinzufügen.
  3. Geben Sie "text" ein (ohne die Anführungszeichen).

Mit den vorhergehenden Schritten fügen Sie dem Manifest den folgenden Abschnitt hinzu:

<Extensions>
  <Extension Category="windows.shareTarget">
    <ShareTarget>
      <DataFormat>uri</DataFormat>
    </ShareTarget>
  </Extension>
</Extensions>

Hinweis  Sie können einen anderen Einstiegspunkt angeben, wenn die App für den Zielfreigabe-Vertrag aktiviert ist. Ändern Sie dazu im Paketmanifest unter der Deklaration Zielfreigabe im Einstellungsabschnitt App den Seiteneintrag Start. Wir raten dringend dazu, außerdem eine gesonderte JavaScript-Datei zu verwenden, die die Aktivierung für diese Seite behandelt. Sehen Sie sich dazu das Beispiel zur Ziel-App für die Inhaltsfreigabe an.

 

Schritt 3: Hinzufügen eines Ereignishandlers zum Erkennen der App-Aktivierung

Wenn ein Benutzer Ihre App zum Freigeben von Inhalten verwendet, aktiviert das System die App. Da dies auf viele unterschiedliche Arten geschehen kann, müssen Sie Code hinzufügen, der erkennt, weshalb die Aktivierung stattgefunden hat. Überprüfen Sie dazu den Wert der kind-Eigenschaft.

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        ...
    }
};

Wenn Sie eine dedizierte Startseite für den Zielfreigabe-Vertrag sehen, können Sie die Überprüfung der kind-Eigenschaft überspringen.

Schritt 4: Abrufen des ShareOperation-Objekts

Das ShareOperation-Objekt enthält alle Daten, die die App zum Abrufen der Inhalte benötigt, die der Benutzer freigeben möchte.

shareOperation = args.detail.shareOperation;

Schritt 5: Kehren Sie vom aktivierten Ereignishandler schnell zurück.

Der activated-Ereignishandler muss schnell zurückgegeben werden. Fügen Sie ein asynchrones Ereignis für den activated-Ereignishandler in die Warteschlange ein, damit die Freigabedaten nach Rückgabe des aktivierten Ereignisses verarbeitet werden.

WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });

Die verbleibenden Schritte implementieren die shareReady-Funktion.

Schritt 6: Überprüfen, ob die "DataPackageView" einen URI enthält

Das ShareOperation-Objekt enthält ein DataPackageView-Objekt. Dieses Objekt ist eine schreibgeschützte Version des DataPackage-Objekts, das von der Quell-App zum Erstellen der Daten verwendet wurde. Stellen Sie mit diesem Objekt fest, ob der freigegebene Inhalt einen Link enthält.

if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.uri)) {
    // Code to process URI goes here.
}

Wir empfehlen zu überprüfen, ob das DataPackage das Datenformat enthält, das Sie interessiert, selbst wenn Ihre App nur ein Format unterstützt. Dies erleichtert Ihnen die Arbeit, falls später andere Datenformattypen und Dateitypen unterstützt werden sollen.

Rufen Sie zum Abrufen des URI die DataPackageView.getUriAsync-Methode auf.

shareOperation.data.getUriAsync().then(function (uri) {
    if (uri != null) {
        // In this sample, we only display the URI. To output the link using this example, 
        // you need a div tag with an id of "output" in your HTML file.
        // In your app, replace this with whatever is appropriate for your scenario.
        document.getElementById("output").innerText = uri.absoluteUri;
    }
});

Schritt 8: Aufrufen von "reportCompleted"

Rufen Sie reportCompleted auf, wenn die App die Inhalte freigegebenen hat. Nachdem Sie diese Methode aufgerufen haben, schließt das System Ihre App.

shareOperation.reportCompleted();

Anmerkungen

Einige Apps stellen u. U. einen URI (Uniform Resource Identifier) zur Verfügung, der nicht mit "http://" oder "https://" beginnt. Beispielsweise könnte eine Quell-App ein Aktivierungsprotokoll bereitstellen, das den Benutzer direkt zu Inhalten in der App selbst weiterleitet. Sollte Ihre App beliebige URIs bereits unterstützen, erhalten Sie diese Funktionalität automatisch. Wenn Ihre App nur bestimmte URIs unterstützt, beachten Sie Folgendes:

  • Wenn Sie HTML unterstützen, verwenden Sie stattdessen das HTML im DataPackage.
  • Wenn Sie HTML nicht, Text aber schon unterstützen, verwenden Sie den Text im DataPackage.
  • Sollte keine der genannten Optionen funktionieren, ziehen Sie in Erwägung, den Benutzer per Meldung darauf hinzuweisen, dass Sie diesen speziellen URI nicht unterstützen.

Versuchen Sie in allen Fällen, Titel und Beschreibung der Daten in die Benutzeroberfläche zu integrieren. Das gibt dem Benutzer mehr Informationen dazu, was geteilt wird.

Das Beispiel zur Ziel-App für die Inhaltsfreigabe veranschaulicht Code für den gesamten End-to-End-Vorgang für eine App, die bei einer Freigabe ein Bild empfängt.

Vollständiges Beispiel

var shareOperation = null;

function shareReady(args) {
    if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.uri)) {
        shareOperation.data.getUriAsync().done(function (uri) {
            // In this sample, we only display the URI. To output the link using this example, 
            // you need a div tag with an id of "output" in your HTML file.
            // In your app, replace this with whatever is appropriate for your scenario.
            document.getElementById("output").innerText = "Uri: " + uri.absoluteUri;
        });
    }
}

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The app was launced. Initialize as appropriate.
        args.setPromise(WinJS.UI.processAll());
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        // This app was been activated for the Share contract
        args.setPromise(WinJS.UI.processAll());

        // We receive the ShareOperation object as part of the eventArgs
        shareOperation = args.detail.shareOperation;


        // We queue an asychronous event so that working with the ShareOperation 
        // object does not block or delay the return of the activation handler.
        WinJS.Application.addEventListener("shareready", shareReady, false);
        WinJS.Application.queueEvent({ type: "shareready" });
    }
};

Verwandte Themen

Beispiel zur Ziel-App für die Inhaltsfreigabe

Freigeben und Austauschen von Daten

So wird's gemacht: Empfangen von Dateien

So wird's gemacht: Empfangen von HTML

So wird's gemacht: Empfangen von Text

Schnellstart: Empfangen von geteilten Inhalten

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Richtlinien für das Debuggen von Ziel-Apps