私はカスタムURLに対する多くの答えを見つけました-このようなスキーム(mycoolapp://somepath
)。
このプラグイン たとえば、カスタムURLを追加します-Sheme。*
しかし、カスタムURLスキームは必要ありません。次のような「通常の」URLが必要です(http://www.mycoolapp.com/somepath
)。
これをブラウザで開くか、たとえばハイパーリンクをクリックすると、アプリを開くように求められます(Googleマップのように)。
この質問にはすでに答えがあるかもしれませんが、私はそれを見つけることができません。
私が何を意味するのかわからない場合は、Androidデバイス:
選択する私のアプリだけで。
私が既存の 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);
});
これは、アプリがすでに実行されていて、意図的に前面に表示されたときにトリガーされます。
あなたが探しているのは、iOSでは「ユニバーサルリンク」、Androidでは「ディープリンク」と呼ばれています。
そして、それを処理するためのCordovaプラグインがあります: https://www.npmjs.com/package/cordova-universal-links-plugin
あなたがする必要があるのは、接続しているデバイスを検出することです http://www.mycoolapp.com/somepath
モバイルデバイスの場合は、アプリを開くカスタムURLスキームへのリンクを含むページを表示できます。または、必要に応じてアプリのカスタムURLを自動で開きます。
Androidマニフェストのactivity
にintent-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で...