2016-08-04 16 views
2

Ich versuche, meine Android App zu starten, mit Deep-Linking. Grundsätzlich erhalten die Nutzer E-Mails mit Links, wenn der Nutzer auf den Link klickt, sollte die App starten. Ich weiß, wie die grundlegende Deep-Linking, aber ich möchte die eigentliche App nicht nur eine bestimmte Aktivität starten. Mein Deep-Linking-Schema ist etwas wie "mydeeplinking" und in der E-Mail ist wie "mydeeplinking: //". Ich bin auf der Suche nach etwas ähnlich dem iOS Deep Linking, die die gesamte App starten. Jede Hilfe wäre willkommen. Vielen Dank im Voraus.Starten Sie die Android App mit Deep Linking

+0

Sie sollten die Abschussaktivitäten auslösen können, als ob der Benutzer auf das Symbol geklickt – Chol

+1

Was Sie suchen, ist Intent-Filter https://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app –

+1

Bitte denken Sie daran, eine Antwort zu akzeptieren, wenn es geholfen hat Sie – SoroushA

Antwort

3

Im Grunde müssen Sie nur intent-filter verwenden, um Android mitzuteilen, welche Art von Daten an Ihre App weitergeleitet werden sollen.

AndroidManifest.xml:

<activity android:name="com.example.MainActivity" > 

    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 

     <data android:scheme="http" /> 
     <data android:scheme="https" /> 

     <data android:host="www.example.com" /> 

     <data android:path="/" /> 
     <data android:path="/map" /> 

    </intent-filter> 

</activity> 

dies Ihre MainActivity starten wird, wenn der Benutzer einen dieser Links klickt:

http://www.example.com/ 
https://www.example.com/ 
http://www.example.com/map 
https://www.example.com/map 
+0

danke für Ihren Beitrag. – user3298158

1

Deeplinking von Firebase stark verbessert wird. Es ist ein bisschen schwer zu beginnen, aber es funktioniert großartig! Überprüfen Sie diese link für ein Beispiel.

Beim Vergleich dieser tiefen Verlinkung mit iOS kann es zu Verwirrung kommen, da sie anders funktionieren. Android war schon immer in der Lage, Informationen von einer App auf eine andere zu übertragen und sogar aus dem Internet zu ziehen, was auch iOS tut. Das ist keine tiefe Verbindung per se. Es kann VIEL weiter gehen als das - es soll eine personalisierte App-Erfahrung bieten, bevor ein Benutzer ein Profil (oder etwas Ähnliches) erstellt. Es ist auch wichtig zu beachten, dass Deep-Linking auf diese personalisierte Informationen auch durch die Installation einer App hält und öffnet die App mit was auch immer Informationen war! Es ist nicht nur eine Absicht! Ihre Frage hat mit URI-Schemata zu tun. Vielleicht hilft Ihnen this, wenn Sie immer noch der Meinung sind, dass Sie nach Deep Linking suchen.

Wenn Sie nur eine App starten möchten (bereits auf dem Benutzergerät installiert oder nicht), sind Intent-Filter der richtige Weg und Intents können Informationen weiterleiten. Wenn Sie möchten, dass ein Benutzer eine Aktivität in einer App verwendet, ohne sie jemals installiert zu haben, ist Android Instant-Apps die richtige Wahl. Wenn Sie nach einer Möglichkeit suchen, Informationen "tief" von der E-Mail oder dem Internet des Nutzers an Ihre App weiterzuleiten, sollten Sie Deep Linking verwenden.

Intent-Filter können verwendet werden, um einige Apps von Webseiten zu öffnen. Wenn ein Link ausgewählt wird, der in einem Browser oder in einer App (oder mehreren Apps) geöffnet werden kann, wird unten auf dem Bildschirm des Telefons eine Box eingeblendet, in der nach der Voreinstellung des Benutzers gefragt wird, ob der Standard bei zukünftigen Klicks geöffnet werden soll. (Siehe Abbildung unten) Möglicherweise muss das JavaScript der Website geändert werden, um das Betriebssystem des Benutzers zu erkennen und den entsprechenden URL-Aufruf zu senden. iOS funktioniert ein bisschen anders.

choose default app

Hier ist, wie ein Intent-Filter zu verwenden. Es hat einige zusätzliche Code, den Sie nützlich finden können ..

public void startNewActivity(Context context, String packageName) { 
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); 
    if (intent == null) { 
     // brings user to the market if app is not installed already 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("market://details?id=" + packageName)); 
    } 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // opens a new "page" instead of overlapping the same app 
    context.startActivity(intent); 
} 

Wenn Sie Daten zur gleichen Zeit, verwenden Sie übergeben müssen intent.putExtra("name", "value");

+0

Danke für Ihren Beitrag und die nützlichen Informationen. – user3298158