web-dev-qa-db-ja.com

cordovaはhttpまたはhttpsのURLからアプリを開くにはどうすればよいですか?

私はカスタムURLに対する多くの答えを見つけました-このようなスキーム(mycoolapp://somepath)。

このプラグイン たとえば、カスタムURLを追加します-Sheme。*

しかし、カスタムURLスキームは必要ありません。次のような「通常の」URLが必要です(http://www.mycoolapp.com/somepath)。

これをブラウザで開くか、たとえばハイパーリンクをクリックすると、アプリを開くように求められます(Googleマップのように)。

この質問にはすでに答えがあるかもしれませんが、私はそれを見つけることができません。

私が何を意味するのかわからない場合は、Androidデバイス:

application link

選択する私のアプリだけで。

12
Nano

私が既存の webintent プラグインを使用したのと同じ問題について、Androidマニフェストファイルを変更しました-これらの行をアクティビティに追加します

<intent-filter>
    <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="http" />
</intent-filter>

そしてindex.htmlondevicereadyを変更しました:

function deviceReady() {
    window.plugins.webintent.getUri(function(url) {
        console.log("INTENT URL: " + url);
        //...
    }); 
}

[〜#〜]編集[〜#〜]

望ましくない動作に気づきました。別のアプリケーションからのリンク(インテント)を使用してアプリを開くと、(多くの場合)新しいインスタンスが作成され、すでに実行されているインスタンスは使用されません(GmailとSkypeでテスト済み)。これを防ぐための解決策は、config.xmlファイルのAndroid起動モードを変更することです:

<preference name="AndroidLaunchMode" value="singleTask" />

(これはcordova 3.5で動作しますが、古いバージョンについてはわかりません)

次に、ondevicereadyにもう1つの関数を追加する必要があります。

window.plugins.webintent.onNewIntent(function(url) {
    console.log("INTENT onNewIntent: " + url);
});

これは、アプリがすでに実行されていて、意図的に前面に表示されたときにトリガーされます。

14
rhorvath

あなたが探しているのは、iOSでは「ユニバーサルリンク」、Androidでは「ディープリンク」と呼ばれています。

そして、それを処理するためのCordovaプラグインがあります: https://www.npmjs.com/package/cordova-universal-links-plugin

3
jwolinsky

あなたがする必要があるのは、接続しているデバイスを検出することです http://www.mycoolapp.com/somepath

モバイルデバイスの場合は、アプリを開くカスタムURLスキームへのリンクを含むページを表示できます。または、必要に応じてアプリのカスタムURLを自動で開きます。

0
Quickly

Androidマニフェストのactivityintent-filterを追加する必要があります。次のようになります:

<intent-filter>
   <action Android:name="Android.intent.action.VIEW" />

   <category Android:name="Android.intent.category.DEFAULT" />
   <category Android:name="Android.intent.category.BROWSABLE" />

   <data Android:scheme="http" />
   <data Android:Host="www.mycoolapp.com" />
   <data Android:pathPrefix="/somepath" />
</intent-filter>

ここに追加できるdataの詳細: http://developer.Android.com/guide/topics/manifest/data-element.html

そしてさらにもっと ここ stackoverflowで...

0
Vlad Stirbu