webentwicklung-frage-antwort-db.com.de

Android Deep Link: Verwenden Sie den gleichen Link für die App und den Play Store

Ich habe eine Website, über die der Benutzer eine Suchanfrage durchführen kann. Die Abfrage kann einige Zeit in Anspruch nehmen (Minuten bis Tage), und ich möchte dem Benutzer ermöglichen, eine Android App herunterzuladen und die Antwort dort zu erhalten, indem er eine E-Mail mit einem Link an sendet der Nutzer.

Ich möchte, dass dieser Mechanismus funktioniert, unabhängig davon, ob der Benutzer die App installiert hat oder nicht. mit anderen Worten:

  • Wenn der Benutzer die App hat, sollte sie mit Deep Link geöffnet werden, das ein Bezeichnerargument enthält.
  • Wenn der Benutzer es nicht hat, sollte es den Play Store auf der Seite der App öffnen (z. B. https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah), lassen Sie den Benutzer das Programm installieren und öffnen Sie die App mit dem Bezeichnerargument.

enter image description here

Gibt es eine Möglichkeit, einen Link zu erstellen, der eine Android Anwendung mit einem Argument öffnet, das unabhängig davon funktioniert, ob die App installiert ist oder nicht?

50
Adam Matan

Diese Problemumgehung könnte funktionieren:

  1. Erstellen Sie auf der Serverseite eine Weiterleitungsregel für Google Play. Beispielsweise, https://www.foo.com/bar/BlahBlah leitet weiter zu https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah.

  2. In der App registriere den serverseitigen Link als Deep Link :

<data Android:scheme="https"
          Android:Host="www.foo.com"
          Android:pathPrefix="/bar" />

Wenn die App nun installiert ist, wird die URL abgefangen und der Pfad kann analysiert werden, um den Teil BlahBlah zu extrahieren. Wenn die App nicht installiert ist, wird der Benutzer durch Klicken auf den Link mit der entsprechenden URL zum Play Store weitergeleitet.

enter image description here

Anmerkungen:

  • /bar/BlahBlah wurde konvertiert zu &referrer=BlahBlah, weil der Play Store ein URL-Argument empfängt und der Deep-Link-Mechanismus mit URL-Pfaden funktioniert (soweit ich das beurteilen kann)
87
Adam Matan

Sie können versuchen, dieses Schema zu verwenden (an den Benutzer zu senden):

intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=Android.intent.action.VIEW;package=com.Android.vending;end";

X: Paketname der App

Y: Deep-Link-Schema, das im Manifest der App definiert werden sollte. (Bitte beachten Sie this ) Hier haben sie diese URL als Beispiel verwendet: " http://www.example.com/gizmos ", daher sollte Y durch ersetzt werden diese URL.

Z: Es können alle Daten sein, die Sie über Google Play an die App weitergeben möchten. Bitte beachten Sie, dass alle Daten, die Sie übergeben, nicht durch "&" getrennt werden sollten, da die ursprünglichen Parameter selbst durch "&" getrennt sind.

Soweit ich experimentiert habe, wird diese URL vom Browser verstanden und leitet Sie auf der Grundlage des Paketnamens und des Deep-Link-Schemas zur App weiter. Andernfalls gelangen Sie zu Google Play.

PS: Google Play sendet eine Sendung an die App. Stellen Sie also sicher, dass Sie die Sendung in einem Empfänger empfangen.

13
Shivam Dixit

Diese Frage ist ziemlich alt, aber auch sehr beliebt. Es lohnt sich also zu wissen, dass dieser Anwendungsfall jetzt offiziell von Firebase unterstützt wird, und zwar Firebase Dynamic Links .

Es werden nur das Öffnen der App und das verzögerte Deep-Linking unterstützt. Dies bedeutet, dass Sie nach dem Installieren der App beim Starten der App die Daten (Links) abrufen können, die zum Installieren der App verwendet wurden.

Es basiert auf App Linking, sodass Sie immer noch den gleichen intent-filter Wie zuvor benötigen.

Kurz gesagt, Sie müssen implementation 'com.google.firebase:firebase-dynamic-links:VERSION' Hinzufügen und den Link von der Instanz der Klasse FirebaseDynamicLinks abrufen.

Natürlich müssen Sie die Links auf der Website gegen die in der Firebase-Konsole erstellten austauschen. Die gute Nachricht ist jedoch, dass diese Links "dynamisch" sind (wie der Name schon sagt), sodass sie auf allen Systemen funktionieren.

Alle detaillierten Informationen und Einstellungen für diesen Anwendungsfall finden Sie hier: https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app

1
michalbrz

Adams Lösung ist ziemlich gut, wenn Sie sie selbst erstellen möchten.

Es gibt ein Open-Source-SDK , das genau dies durch Branch Metrics erledigt (vollständige Offenlegung, ich arbeite dort).

Grundsätzlich legen Sie Ihr URI-Schema im Zweigstellen-Dashboard fest, erstellen eine Verknüpfung mit den Daten, die Sie übergeben möchten (in diesem Fall die Abfrageparameter, aber Sie entscheiden), und das SDK verfügt über eine Methode mit einem Rückruf, mit der Sie die Abfrage erhalten Parameter (durch Installation oder regelmäßige Deeplink durch Klicken auf den Zweig Link).

0
Sahil Verma