2017-03-16 63 views
5

我知道有關於此的幾個問題,但他們都沒有幫助解決我的問題。從Android中的URL方案打開我的應用程序

我希望能夠點擊鏈接從電子郵件/文字/瀏覽器並打開我的應用程序。

我有AndroidManifest.xml中代碼:

<!-- Splash Activity --> 
    <activity 
     android:name=".ui.SplashActivity" 
     android:label="@string/app_name" 
     android:theme="@style/SplashTheme" 
     android:launchMode="singleTask"> 

     <!-- Launcher intent filter --> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

     <!-- Branch URI scheme --> 
     <intent-filter> 
      <data android:scheme="myscheme" android:host="open" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
    </activity> 

這似乎遵循文檔here準確,但是,當我使用Chrome(或Android瀏覽器)瀏覽到myscheme://open,我的應用程序不打開,而我得到的谷歌搜索結果myscheme://打開

任何人都可以看到我在這裏失蹤的拼圖嗎? 如何讓我的應用程序通過URI打開?

小更新:

閱讀this後,我發現導航Chrome瀏覽器market://details?id=com.myapp打開Play商店。相反,它會返回Google搜索結果 - 與嘗試直接啓動我的應用時相同。這是令人困惑的。 我是否缺少全局OS設置以允許深度鏈接?

+0

「當我使用Chrome瀏覽器(或Android瀏覽器)瀏覽到myscheme:// open」 - 你是怎麼做到的?在地址欄中鍵入?用這個URL點擊網頁中的鏈接?還有別的嗎? – CommonsWare

+0

@CommonsWare通過(1)在地址欄中輸入,(b)點擊電子郵件中的鏈接。兩者都導致相同的行爲。 – Brett

回答

1

有沒有要求任何應用程序要注意myscheme://open

特別是:

  • 有任何Web瀏覽器來嘗試當你輸入myscheme://open到地址欄,推出一些第三方應用程序沒有要求,因爲用戶不可能做到這一點的真實世界。

  • 有沒有要求電子郵件程序試圖創建一個ACTION_VIEWIntentmyscheme://open

  • 沒有要求SMS客戶端搜索字符串myscheme://open的所有傳入消息,意識到這是某種程度上的應用程序鏈接,並對其進行處理。

您將有一定程度上更好的運氣總使用https(或者,在緊要關頭,http),網址爲您的應用程序連接(http://www.example.com/gizmos URL從the documentation that you linked to)。然後,SMS客戶端可能會認識到這是一個URL並對其進行處理。總體而言,您應該將其轉移到您的應用程序或您的網頁上,這對用戶來說至少是有用的。但是,當用戶在地址欄中鍵入您的網址時,您的應用仍然不一定會打開,因爲瀏覽器可能不希望在此處輸入應用鏈接。

您可以通過publishing a digital asset links file增加https應用鏈接工作的可能性,並以您想要的方式工作,並將其綁定到清單中。

但總的來說,這仍然依賴於客戶選擇關注這個東西。有時候他們會這樣做,因爲Android使得這樣做相對容易。有時他們不會。歡迎使用Web瀏覽器查看您的URL,看到它是https,說「嘿,作爲一個Web瀏覽器,我知道如何處理這個!」,並加載該網頁,忽略已安裝的應用程序。您和我可能會認爲這是該瀏覽器中的一個錯誤;該瀏覽器的開發者歡迎不同意。

我發現,導航Chrome瀏覽器市場://細節ID = com.myapp不打開Play商店

這又回到了「開發人員可以做他們想做什麼」的一部分。如果您點擊了該網址的網頁中的鏈接,Chrome有可能會將您帶到Play商店。但是,Chrome沒有義務將地址欄視爲對待網頁中的鏈接。

2

Chrome無法從手動輸入的URI方案打開應用程序。實際上,手動輸入的鏈接將從從未在Chrome中啓動外部應用程序。這是設計 - 無論出於何種原因,Chrome團隊認爲用戶輸入地址後應始終保持在瀏覽器內。

您可以通過將深層鏈接置於用戶驅動器操作(例如,標準的<a>標記)後在某種程度上解決此問題,但Chrome具有您自己應該使用的自己的標準Chrome Intent 。根據您使用的設備,標準瀏覽器也可能是這種情況。

在其他應用程序中,是否將自定義URI方案標識爲「可點擊鏈接」取決於相關應用程序。爲了獲得最佳兼容性,您需要將其封裝在帶重定向的常規http://鏈接中。

如果您有興趣深入瞭解深度鏈接的複雜問題,那麼this post是一個很好的開始。如果你只是想讓它在沒有額外努力的情況下工作,Branch.io(全面披露:我在分支團隊中)作爲免費服務解決了這個問題。

相關問題