web-dev-qa-db-ja.com

Firefox for Androidは、リンクがクリックされてもアプリを起動しません

Firefoxは、クリックされたリンクのインテントを本来の方法で起動しません。したがって、Firefoxのリンクをクリックしてアプリを起動することはできません(これはChromeおよびその他のブラウザーで可能です)。

編集:これは2013年からの投稿であることに注意してください。

望ましい動作は次のとおりです。私のウェブサイトにリンクがあり、クリックするとAndroidアプリが起動します。アプリがインストールされていない場合は、GooglePlayのページを開いてください。ダウンロードしてください。

方法

私がそれを実装する方法は、次の形式の「インテントURI」を使用することです:intent://myhost.com/#Intent;scheme=myscheme;package=com.myapp;end

アプリでは、マニフェストにインテントフィルタを登録し、一致するインテントをリッスンします。ただし、リンクがクリックされたときにそのようなインテントを起動してアプリを起動できるようにするのはブラウザの責任です。

私はこの方法をさまざまなブラウザでテストしましたが、ほとんどのブラウザで機能します。 Firefoxの注目すべき例外を除いて。他のブラウザでは、アプリが起動するか、Google Playのページが読み込まれます(デバイスにインストールされていない場合) 。

「インテントURI」を使用する方法は、Googleが推奨する方法です。 Chromeや他のいくつかのブラウザで完全に機能します。他の方法もあります。可能性について多くのスレッドや記事を読みました。主な選択肢は次のとおりです。

代替方法

  1. myscheme://mywebsite.comなどのカスタムスキームを使用する
  2. http://mywebsite.comのような通常のhttpリンクを使用する

代替案1は、次の2つの理由で推奨されません。-私はそのようなスキームを所有していない、グローバルに存在しない、間違っている。 Googleもmarket://...を使用してGooglePlayアプリを起動していましたが、これは間違っており、変更する必要があることを認めています。 -アプリが現在インストールされていない場合、アプリは起動せず、ほとんどのブラウザにエラーページが表示されますが、これは明らかに望ましくありません。

代替案2はほとんどのブラウザで機能せず、「インテントURI」メソッドを優先して非推奨になっているようです。

特にFirefox

カスタムスキーム(代替1)でのみ機能します。通常のhttpリンク(代替2)の場合は、リンクをロードしてWebサイトを表示するだけです。推奨される「インテントURI」メソッドの場合、何もしません。実際には、アプリを起動するかどうかを尋ねるダイアログが表示されますが、[はい]をクリックしても何も起こりません。そのため、Firefoxは「intent://...」のようなリンクを認識しているようですが、それらを適切に処理していません。

Q:Firefoxのリンクからアプリを起動するための推奨される方法は何ですか? Firefoxで「インテントURI」メソッドがサポートされていないのはなぜですか?

関連リンク: https://developers.google.com/chrome/mobile/docs/intentshttps://stackoverflow.com/a/3472228/1045941 (スレッドはかなり古いことに注意してください)

27
Stan

1つのオプションは、次のような非表示のiframeを追加することです。

<iframe src="myscheme://..." style="visibility: hidden"></iframe>

Firefoxで動作することがテストされていますが、Chromeでは動作しません。ユーザーエージェントの検出を使用することをお勧めします。例を次に示します。 http://www.mazdigital.com/blog/post/2014/deep-links-on-mobile-browsers-demystified/

1
Cash Lo