Cordova открыть приложение из http или https url

Я не могу найти любое решение для моей проблемы.

Я нашел много ответов для пользовательского URL-Sheme, как это (mycoolapp://somepath).

плагин например, добавляет пользовательский URL-Sheme.

но я не хочу пользовательский URL-Sheme, я хочу "нормальный" Url, как это (http://www.mycoolapp.com/somepath).

Если вы откроете это в вашем браузере или нажмите на гиперссылку, например, то он shoud попросит вас открыть мое приложение (как google maps делает он.)

этот вопрос, возможно, уже есть ответ, но я не могу найти его.

Edit:

Если вы не знаете, что я имею в виду, вот как это должно выглядеть, если вы нажмете на ссылку на мой сайт на устройстве Android:

просто с моим приложением, чтобы выбрать.

4 ответов


для той же проблемы, которую я использовал existing webintent плагин, модифицированный файл манифеста android-добавьте эти строки в activity

<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>

и изменил индекс.html ondeviceready:

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

редактировать

Я только что заметил поведение, которое может быть нежелательным. Когда вы открываете приложение, используя ссылку (намерение) из другого приложения ,оно (во многих случаях) создает новый экземпляр и не использует уже запущенный (протестировано с gmail и skype). Чтобы предотвратить это решение, необходимо изменить режим запуска Android в config.xml-файл:

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

(он работает с cordova 3.5, не уверен в более старой версии)

затем нужно добавить еще одну функцию в ondeviceready:

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-адрес приложения, если хотите.


вы должны добавить intent-filter на activity в манифесте android. Что-то вроде этого:--5-->

<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...