Запуск приложения BB10, нажав на ссылку в браузере или по электронной почте
Можно ли зарегистрировать приложение для запуска при запросе определенного URL-адреса в браузере, электронной почте или bbm?
Например, я хотел бы, чтобы пользователь нажимал на ссылку flycraft://replay/123, чтобы мое приложение запускалось и передавало URI.
3 ответа
Чтобы сделать это на BlackBerry 10, добавьте следующий код в файл дескриптора панели:
<invoke-target id="eu.nlogn.flycraftplaybook.replayview">
<invoke-target-type>application</invoke-target-type>
<filter>
<action>bb.action.VIEW</action>
<mime-type>*</mime-type>
<property value="flycraft://" var="uris" />
</filter>
</invoke-target>
тогда вы должны прослушать событие NAVIGATOR_INVOKE_TARGET и обработать его следующим образом:
const navigator_invoke_invocation_t *invoke = navigator_invoke_event_get_invocation(event);
if (invoke) {
// retrieve invocation action
const char *action = navigator_invoke_invocation_get_action(invoke);
const char *uri = navigator_invoke_invocation_get_uri(invoke);
if (action && uri) {
// handle the uri you got
}
} else {
fprintf(stderr, "Error retrieving invocation: %s\n", navigator_event_get_err(event));
}
К сожалению, нет способа сделать это в Playbook.
Это невозможно в данный момент.
Есть 2 части к этому:
- Регистрация схемы URI в браузере. например
flycraft://
так что браузер знает, как обращаться с этими ссылками как с вызовами. - Регистрация вашего приложения для обработки
flycraft://
вызов, чтобы ваши приложения загружались.
К сожалению, первая часть в настоящее время невозможна. На этом этапе есть планы, но ничего конкретного.
Да! Вы можете сделать это, используя среду вызовов BB10. Достаточное количество деталей предоставлено на appurl.org. Короче:
- Добавьте цель вызова в ваш файл bar-descriptor.xml, если у вас ее еще нет.
- Добавьте целевой фильтр к своей цели с помощью действий "bb.action.VIEW" и "bb.action.OPEN" и тега
<property var="uris" value="flycraft:"> </property>
- Добавить
invokeManager
возражать против вашего приложенияmain
и подключите егоinvoked
сигнал в какой-то слот вашего кода, который может обработать этот запрос.