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