web-dev-qa-db-ja.com

Androidディープリンクは特定の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>
_

このインテントフィルターはすべてのリンクを処理しますが、特定のURLをキャッチしたくありません。

_https://www.example.com/hello/redirect/
_

これまでに試したこと:

キャッチしたい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/">
...
_

しかし、私のホームページのURL _https://www.example.com_が機能しません。

私が使用する場合

_Android:pathPrefix="/"
_

次に、これにより、省略したいURLを含むすべてのURLのキャッチが再開されます。

_Android:pathPattern_も使用してみましたが、この^((?!redirect).)*$のような複雑な正規表現を理解できません。これは、文字列などで試してみると正常に機能します。

特定のURLを省略する方法を知っている人はいますか?

更新:

@PLNech here で提案されているように、_Android:pathPrefix_を使用してキャッチする必要のあるすべてのURLを追加し、_Android:path: "/"_を使用してホームページのURLをキャッチしました。すなわち 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/">
_
14
Aayush Thakur

Androidディープリンクメカニズム 一部のURLを明示的に除外する方法はありません: どちらかAndroid:pathで明示的にパスを含める、Android:pathPrefixでプレフィックスに一致するパス、またはワイルドカードに一致するパスを含めることができますAndroid:pathPatternまたは*を使用できる.*を使用します。

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

また、airbnbの DeepLinkDispatch ライブラリを見ることができます。これは 特定のURLを除外することを許可します のようです。

9
PLNech

私があなたの問題を正しく理解しているなら、あなたは特定のURLのリストから特定のURLを除外したいと思うでしょう。あなたが試したことはそれをする良い方法でした。

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

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

4
user7125279