Как Cordova открыть приложение с http или https URL?
Я нашел много ответов для пользовательской схемы URL, подобной этой (mycoolapp://somepath
).
Этот плагин, например, добавляет пользовательский URL-Sheme. *
Но мне не нужна пользовательская URL-схема, мне нужен такой "нормальный" URL (http://www.mycoolapp.com/somepath
).
Если вы откроете это в своем браузере или, например, нажмете на гиперссылку, вам следует попросить открыть мое приложение (как это делают карты Google).
На этот вопрос, возможно, уже есть ответ, но я не могу его найти.
Если вы не знаете, что я имею в виду, то как это должно выглядеть, если вы нажмете ссылку на мой сайт на устройстве Android:
![application link]()
Просто с моим приложением, чтобы выбрать.
Ответы
Ответ 1
Для той же проблемы я использовал существующий плагин 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.html ondeviceready:
function deviceReady() {
window.plugins.webintent.getUri(function(url) {
console.log("INTENT URL: " + url);
//...
});
}
EDIT
Я только что заметил поведение, которое может быть нежелательным. Когда вы откроете приложение, используя ссылку (намерение) из другого приложения, оно (во многих случаях) создаст новый экземпляр и не будет использовать уже работающий (протестирован с 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);
});
Это срабатывает, когда приложение уже запущено и намеренно выведено на передний план.
Ответ 2
То, что вы ищете, называется "Universal Links" на iOS и "Deep Linking" на Android.
И для этого есть плагин Cordova: https://www.npmjs.com/package/cordova-universal-links-plugin
Ответ 3
Что вам нужно сделать, это обнаружить устройство, которое подключается к http://www.mycoolapp.com/somepath
Если это мобильное устройство, вы можете представить их со страницей со ссылкой на свою настраиваемую схему URL-адресов, которая откроет ваше приложение. Или автоматически откройте пользовательский URL-адрес приложения, если хотите.
Ответ 4
Вы должны добавить intent-filter
к вашему activity
в манифесте 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: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...