2017-01-02 12 views
3

私は自分のアプリへのディープリンクを正常に実装しましたが、問題が残っています。Android Deep Linksは特定のURLを省略します

<intent-filter android:autoVerify="true"> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data 
     android:host="*.example.com" 
     android:scheme="https"/> 
</intent-filter> 

このインテントフィルタは、すべてのリンクを処理しますが、私は私がこれまで試したどのような

https://www.example.com/hello/redirect/ 

すなわち、特定のURLをキャッチしたくない:

私がすべて入ってみました手動でキャッチしたいURL

<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/m/"> 
<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/c/"> 
<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/p/"> 
... 

しかし、t私のホームページのURL https://www.example.comは動作しません。

私は

android:pathPrefix="/" 

を使用する場合、これは再び私は省略したいURLを含むすべてのURLを引く開始します。

私もandroid:pathPatternを使ってみましたが、このような複雑な正規表現を理解することはできません^((?!redirect).)*$これは文字列とすべてで試してみるとうまくいきます。

どのように特定のURLを省略することができますか?

UPDATE:

@PLNech hereによって示唆されるように、私はhttps://www.example.com/

<data 
    android:host="*.example.com" 
    android:scheme="https" 
    android:path="/"/> 
<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/m/"> 
<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/c/"> 
<data 
    android:host="*example.com" 
    android:scheme="https" 
    android:pathPrefix="/p/"> 

答えて

5

Android deep linking mechanismは、明示的にAndroidのディープリンクのメカニズムから、いくつかのURLを除外するための方法を提供していません:あなたは、パスはパスがandroid:pathPrefixとプレフィックスに一致するか、*かを使用することができますandroid:pathPatternとワイルドカードのマッチングなどが、android:pathで明示的にeither含むことができ、 .*

あなたのケースでは、あなたが"/"を使用し、あなたのウェブサイトへのすべてのリンクを持っているのいずれかがありますが(自分のホームページを含む)のアプリで開く、またはすべてのディープリンクの共有と共通のプレフィックスを持っています。

また、と思われるairbnbのDeepLinkDispatchライブラリを見ることもできます。

2
つまり、私は android:pathPrefixを使用してキャッチし、私のホームページのURLをキャッチするために android:path: "/"を使用する必要があるすべてのURLを追加しました

問題を正しく理解していれば、特定のURLのリストから特定のURLを除外したいと考えています。あなたが試みたことはそれを行う良い方法でした。

android:pathPatternあなたが言ったように複雑な正規表現パターンを理解できません。

あなたの問題を解決する唯一の方法は、省略したいURLを変更することだと思います。ホストまたはそのURLの一部を変更するか、example.comという名前をたとえばexample2.com/hello/redirect/に変更します。

+1

私はあなたのポイントを得る。それが私の最後の手段です。しかしその前に、問題を解決するために実装できる解決策があるかどうかを知る必要があります。 –

関連する問題