アプリへのディープリンクを正常に実装しましたが、問題が発生します。
_<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/">
_
Androidディープリンクメカニズム 一部のURLを明示的に除外する方法はありません: どちらかAndroid:path
で明示的にパスを含める、Android:pathPrefix
でプレフィックスに一致するパス、またはワイルドカードに一致するパスを含めることができますAndroid:pathPattern
または*
を使用できる.*
を使用します。
あなたの場合、"/"
を使用してすべてのアプリで開いたウェブサイトへのリンク(ホームページを含む)を持っているか、すべてのディープリンクを持っている必要がありますリンクは共通のプレフィックスを共有します。
また、airbnbの DeepLinkDispatch ライブラリを見ることができます。これは 特定のURLを除外することを許可します のようです。
私があなたの問題を正しく理解しているなら、あなたは特定のURLのリストから特定のURLを除外したいと思うでしょう。あなたが試したことはそれをする良い方法でした。
Android:pathPattern
あなたが言ったように複雑な正規表現パターンを理解していません。
問題を解決する唯一の方法は、省略したいURLを変更することだと思います。ホストまたはそのURLの一部を変更するか、名前を変更しますexample.com
言う、 example2.com/hello/redirect/
。