簡體   English   中英

使用深層鏈接啟動Android App

[英]Launch the Android App using deep linking

我正在嘗試使用深層鏈接啟動我的Android應用程序。 基本上,用戶將收到帶鏈接的電子郵件,當用戶點擊鏈接時,應該啟動應用程序。 我知道如何進行基本的深層鏈接,但是,我想要啟動實際的App而不僅僅是一個特定的活動。 我的深層鏈接方案類似於“mydeeplinking”,在電子郵件中就像“mydeeplinking://”。 我正在尋找類似於iOS深層鏈接的東西,它推出了整個App。 任何幫助,將不勝感激。 提前致謝。

基本上,您需要做的就是使用intent-filter來告訴Android應該將哪種類型的數據路由到您的應用。

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>

當用戶點擊以下任何鏈接時,這將啟動您的MainActivity:

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

Firebase大大增強了深層鏈接。 它有點難以入手,但效果很好! 請查看此鏈接以獲取示例。

將這種深層鏈接與iOS進行比較可能會產生混淆,因為它們的工作方式不同。 Android一直能夠將信息從一個應用程序推送到另一個應用程序,甚至可以從網絡中獲取,這正是iOS正在做的事情。 這不是深層鏈接本身。 它可以比這更進一步 - 它甚至在用戶創建配置文件(或類似的東西)之前提供個性化的應用程序體驗。 同樣重要的是要注意,即使通過安裝應用程序,深層鏈接也會保留此個性化信息,並打開應用程序,無論該信息是什么! 這不僅僅是一個意圖! 您的問題與URI方案有關。 如果你仍然同意你正在尋找深層鏈接, 可能會有所幫助。

如果您只是想要啟動一個應用程序(已經安裝在用戶設備上),那么可以使用意圖過濾器,並且意圖可以傳遞信息。 如果您希望用戶在應用程序中使用活動而不安裝它,那么Android即時應用程序是正確的選擇。 如果您正在尋找一種方法將信息從用戶的電子郵件或互聯網“深入”傳遞到您的應用,建議進行深層鏈接。

Intent過濾器可用於從網頁打開某些應用程序。 當選擇可以在瀏覽器或應用程序(或多個應用程序)中打開的鏈接時,將從手機屏幕底部拉出一個框,詢問用戶偏好默認情況下在未來點擊時打開。 (見下圖)可能必須更改網站的javascript以檢測用戶的操作系統並發送正確的URL調用。 iOS的工作方式略有不同。

選擇默認應用

以下是如何使用intent過濾器。 它有一些你可能會覺得有用的額外代碼..

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);
}

如果需要同時傳遞數據,請使用intent.putExtra("name", "value");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM