Cordova从http或https网址打开应用程序

Nan*_*ano 10 javascript url-scheme cordova

我无法找到解决问题的方法.

我找到了许多自定义URL-Sheme的答案,如此(mycoolapp://somepath).

例如,这个插件添加了一个自定义URL-Sheme.

但我不想要一个自定义URL-Sheme,我想要一个像这样的"普通"Url(http://www.mycoolapp.com/somepath).

如果你在浏览器中打开它或者单击超链接,那么它会要求你打开我的应用程序(就像谷歌地图那样).

这个问题可能已经有了答案,但我找不到.

编辑:

如果您不知道我的意思,那么如果您点击Android设备上我的网站链接,那该怎么回事?

只需用我的应用程序选择.

rho*_*ath 15

对于同样的问题,我使用了现有的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>
Run Code Online (Sandbox Code Playgroud)

并修改了index.html ondeviceready:

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

编辑

我刚刚注意到一种可能不需要的行为.当您使用来自其他应用程序的链接(意图)打开应用程序时,它(在许多情况下)将创建一个新实例而不使用已经运行的实例(使用gmail和Skype进行测试).为了防止这种情况,解决方案是在config.xml文件中更改Android启动模式:

<preference name="AndroidLaunchMode" value="singleTask" />
Run Code Online (Sandbox Code Playgroud)

(它适用于cordova 3.5,不确定旧版本)

然后你需要再添加一个函数来ondeviceready:

window.plugins.webintent.onNewIntent(function(url) {
    console.log("INTENT onNewIntent: " + url);
});
Run Code Online (Sandbox Code Playgroud)

当应用程序已经运行并且意图带到前面时会触发此操作.


小智 5

您正在寻找的内容在 iOS 上称为“通用链接”,在 Android 上称为“深层链接”。

有一个 Cordova 插件可以处理这个问题:https://www.npmjs.com/package/cordova-universal-links-plugin

  • 该插件已被弃用。 (2认同)