Öffnen von Google Play im Popup (wie Vimeo, Wisher, Buzzfeed) – Instant App

Lesezeit: 3 Minuten

Wie öffne ich Google Play in Popups wie Wisher, Buzzfeed, Vimeo?

Wunscher Buzzfeed

Ich sah zu Google-Dokumentationaber es geht nur um das Öffnen durch die Google Play App (market://) oder über einen Browser (http://).

Ich möchte meine Instant-App öffnen, um die vollständige App wie auf Bildschirmen zu installieren.

Ich denke du suchst showInstallEingabeaufforderung.

  • danke, es funktioniert. Aber ich habe ein Problem mit NFC und Instant App. Ich möchte die Instant App über ein NFC-Tag öffnen. Auf dem NFC-Tag wird die URL gespeichert. Aber wenn ich mit einem Telefon auf das NFC-Tag tippe, öffnet sich ein Browser. Wenn ich über Google Mail auf dieselbe URL klicke, wird die Instant App geöffnet. Wissen Sie, warum..?

    – Stonek

    17. Januar 2018 um 15:37 Uhr

  • Vielleicht möchten Sie Folgendes überprüfen: stackoverflow.com/questions/46948624/instant-apps-with-nfc

    – Kyle Venn

    17. Januar 2018 um 15:59 Uhr

  • @KyleVenn Ich habe es auch gefunden und alle Antworten/Kommentare gelesen, aber es gibt keine Lösung dafür

    – Stonek

    17. Januar 2018 um 16:04 Uhr

  • Es sieht so aus, als ob das Öffnen über NFC auf Pre-O-Geräten funktionieren sollte und der Android Oreo-Bug verfolgt wird hier.

    – Kyle Venn

    17. Januar 2018 um 16:07 Uhr

  • Ich teste auf N

    – Stonek

    17. Januar 2018 um 16:36 Uhr

TL;DR:

InstantApps.showInstallPrompt(activity, 
                              postInstallIntent, 
                              Constants.INSTALL_INSTANT_APP_REQUEST_CODE, 
                              referrerString);

Bei Vimeo verwenden wir Branch für unsere Web-> Mobile-App-Installation sowie unsere Instant-App-> Mobile-App-Installation (da es einige zusätzliche Metriken liefert und uns die Referrer etwas besser vergleichen lässt).

Wenn Sie daran interessiert sind, Branch zu verwenden, finden Sie die Dokumentation für die Installationsaufforderung hier. Und die Verwendung sieht so aus:

if (Branch.isInstantApp(this)) {
  myFullAppInstallButton.setVisibility(View.VISIBLE);
  myFullAppInstallButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
       BranchUniversalObject branchUniversalObject = new BranchUniversalObject()
           .setCanonicalIdentifier("item/12345")
           .setTitle("My Content Title")
           .setContentDescription("My Content Description")
           .setContentImageUrl("https://example.com/mycontent-12345.png")
           .setContentMetadata(new ContentMetadata()
                 .addCustomMetadata("property1", "blue")
                 .addCustomMetadata("property2", "red"));

      Branch.showInstallPrompt(myActivity, activity_ret_code, branchUniversalObject);
    }
  });
} else {
  myFullAppInstallButton.setVisibility(View.GONE);
}

Die Implementierung von Branch ruft schließlich die in der anderen Antwort erwähnte API auf hier.

Was aussieht wie:

public static boolean showInstallPrompt(Activity activity, 
                                        Intent postInstallIntent, 
                                        int requestCode, 
                                        String referrer)

Zeigt einen Dialog an, der es dem Benutzer ermöglicht, die aktuelle Instant-App zu installieren. Diese Methode ist keine Operation, wenn der aktuell ausgeführte Prozess eine installierte App ist. Sie müssen eine Absicht nach der Installation angeben, die das System verwendet, um die Anwendung nach Abschluss der Installation zu starten.

Sie finden eine Beispielverwendung hier. Und sieht wie folgt aus:

class InstallApiActivity : AppCompatActivity() {


    /**
     * Intent to launch after the app has been installed.
     */
    private val postInstallIntent = Intent(Intent.ACTION_VIEW,
            Uri.parse("https://install-api.instantappsample.com/")).
            addCategory(Intent.CATEGORY_BROWSABLE).
            putExtras(Bundle().apply {
                putString("The key to", "sending data via intent")
            })

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_install)

        val isInstantApp = InstantApps.isInstantApp(this)

        findViewById<Button>(R.id.start_installation).apply {
            isEnabled = isInstantApp
            // Show the installation prompt only for an instant app.
            if (isInstantApp) {
                setOnClickListener {
                    InstantApps.showInstallPrompt(this@InstallApiActivity,
                            postInstallIntent,
                            REQUEST_CODE,
                            REFERRER)
                }
            }
        }
    }

    companion object {
        private val REFERRER = "InstallApiActivity"
        private val REQUEST_CODE = 7
    }
}

Es wird nicht empfohlen, da es veraltet ist, aber Sie können das Dialogfeld technisch mit dem folgenden Code anzeigen lassen:

InstantApps.showInstallPrompt(activity, Constants.INSTALL_INSTANT_APP_REQUEST_CODE, null);

Siehe auch: https://stackoverflow.com/a/47666873/1759443

  • Kennen Sie eine Java-Version davon? Java erkennt zum Beispiel ‘Bundle()’ nicht. Unglaublicherweise habe ich noch nie ein Java-Beispiel einer ‘showInstallPrompt’-Implementierung mit dem zugehörigen ‘postInstallIntent’ gesehen, wie eine Übersetzung dieser Referenz auf den Github-Kotlin-Code.

    – Androidcoder

    4. September 2019 um 15:30 Uhr


1014070cookie-checkÖffnen von Google Play im Popup (wie Vimeo, Wisher, Buzzfeed) – Instant App

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy