App-Indizierung mit Ampersand in Deep Link funktioniert nicht

9

Wir versuchen, die Funktion Google-App-Indizierung zu implementieren. Wir haben die Deep-Links zu unserer Website mit dem rel-alternate-Tag im folgenden Format hinzugefügt:

%Vor%

Jetzt erhalten wir Crawling-Fehler beim Content-Mismatch. Wenn ich den QR-Code zum Testen von hier verwende, funktioniert alles einwandfrei. Aber wenn ich einen Crawling-Fehler öffne, klicke auf "App-Seite öffnen" und verwende den adb-Befehl zum Testen. Ich kann sehen, dass alles, was vom kaufmännischen Und-Zeichen kommt, nicht an die App weitergegeben wird und meine Produktdaten daher nicht geladen werden können. Ich vermute, das ist, wie der Crawler den Inhalt der App überprüft, und deshalb erhalten wir Content Mismatch Errors.

Auch wenn ich "Fetch as Google" von der Search Console verwende, sieht es so aus, als ob alles vom kaufmännischen Und-Zeichen abgeschnitten wird.

Ich habe bei eBay geprüft, wie es mit ihrer App funktioniert, und das ist der Link, den sie verwenden:

%Vor%

Sie haben das kaufmännische Und-Zeichen mit & codiert, aber wenn ich das tue und es mit der Funktion "Fetch as Google" teste, funktioniert es auch nicht.

Diese Benutzer scheinen dasselbe Problem zu haben, aber sie haben keine Lösung (falls sie eine gefunden haben):

Ссылка Ссылка

Ich bin dankbar für irgendwelche Ideen.

Update 1

So interpretiere ich den Deep Link in der Android App:

%Vor%

Update 2

Hier ist der relevante Teil unserer Manifest.xml:

%Vor%     
Michael Schmidt 20.07.2015, 09:01
quelle

3 Antworten

0

Update 3
Ich versuche immer noch zu verstehen, ob es möglich ist, eine Änderung am Manifest zu vermeiden und die App erneut zu übermitteln. Haben Sie mit dem von Ihnen veröffentlichten AndroidManifest versucht, nur das rel-alternate-Tag so zu ändern, dass es einen Host enthält (Ereignis, wenn es nicht im Manifest enthalten ist)? Haben Sie zum Beispiel mit android-app://id.of.the.app/scheme/fakehost/?screen=Product&product=123456 versucht wo fakehost eine Zeichenfolge ist? Ich denke, dass die Syntax des Tags android-app://{package_name}/{scheme}/{host_path} sein muss, so dass es notwendig ist, einen Host in der Website zu haben (aber wahrscheinlich nicht in der App).

Update 2
Nachdem du das Manifest veröffentlicht hast, fehlst du dem obligatorischen host im Datentag deines Intent-Filters.

Holen Sie sich dies als Referenz:

%Vor%

und das Meta in html sollte (android-app: // paketname / schema / host)

sein %Vor%

Sie müssen wahrscheinlich Ihre App aktualisieren, da Ihr Manifest repariert werden muss.

Zuerst, vielen Dank für alle Klarstellungen. Ich denke, es gibt einige Verwirrung über Deep Link (die Funktion, die Sie implementieren) und Chrome Intent (der Link, der Sie haben als Kommentar zur Verfügung gestellt). Also habe ich beschlossen, ein kleines Projekt zu implementieren, das Sie von meinem Dropbox-Ordner herunterladen können. Das Projekt ist sehr einfach und hat eine einzige Aktivität, die eine Zeile für jeden -Parameter ausgibt, der von den Intent-Daten empfangen wird (natürlich, wenn Sie die App über den App Launcher starten, sehen Sie nichts). Die Aktivität unterstützt zwei Intent-Filter-Schemas (my-android-app und http), und am Ende von MainActivity.java finden Sie (als Kommentar)

  1. Eine Zeile zum Testen der Tiefenverknüpfung mit adb und dem ersten Schema
  2. Eine Zeile zum Testen der Tiefenverknüpfung mit adb und dem zweiten Schema
  3. Eine einfache HTML-Seite, um den Deep-Link mit einem Browser zu testen - die letzten beiden href-Intents werden von Chrome ordnungsgemäß verwaltet.

Da ich keinen Zugriff auf Ihren Code habe und nicht sehen kann, ob es ein Problem gibt, denke ich, dass dies der beste Weg ist, Ihnen zu helfen und meine Antwort akzeptiert zu bekommen:)

    
Mimmo Grottoli 29.07.2015, 11:41
quelle
0

Versuchen Sie, kaufmännisches Und durch %26

zu ersetzen

Das Problem ist ein Fehler in den Plattform-Tools Version 21

    
jlopez 27.07.2015 10:10
quelle
0

App-Indizierung mit Abfrageparametern in Uri funktioniert gut für mich. Bitte überprüfen Sie, ob Sie alle Schritte korrekt ausgeführt haben:

  • Deklarieren Sie das Schema für id.of.the.app.StartActivity in AndroidManifest.xml

    %Vor%

  • Parse Deeplink

Nehmen wir an, wir haben folgenden Deeplink my_custom_scheme://test_authority/product_screen/?product=123456&test_param=0000&utm_source=google&utm_medium=organic&utm_campaign=appindexing

%Vor%
  • Testen Sie die App-Indizierung über die Befehlszeile:

    %Vor%

Mit diesem Befehl adb simulieren wir GoogleBot call.

  • Gehe zu "Fetch as Google" in Search console und überprüfe ob GoogleBot auch gut funktioniert und rendert den korrekten Anwendungsbildschirm.

    %Vor%

P.S. : GoogleBot rendert die Bildschirme nicht richtig. Ich habe ein paar leere Bildschirme mit korrekten Deeplinks. Versuchen Sie in diesem Fall, dieselben Deeplinks erneut auszuführen. Es hat für mich funktioniert.

    
Veaceslav Gaidarji 31.07.2015 08:24
quelle

Tags und Links