2015-12-21 4 views
1

Я разрабатываю приложение на основе мобильного сайта, который запускается внутри Windows Runtime WebView для Windows Phone 8.1. В настоящее время я ищу способ поймать ссылки на клики в веб-приложении приложения, которые начинаются с определенного шаблона. В версии Windows Phone Silverlight, следующее было возможно:Поймать ссылку с определенным рисунком в Windows Runtime

В моей WebView отобразить ссылки как этот

<a href="ownstuff:bla()">Do something in the app</a> 
<a href="ownstuff:blubb()">Do something different in the app</a> 

В приложении, я поймаю щелчок по такой ссылке с помощью следующего кода

MyWebView.Navigating += HandleOwnStuff; 
void HandleOwnStuff(object sender, NavigatingEventArgs e) { 
     String url = e.Uri.ToString(); 
     if(url.StartsWith("ownstuff:")) { 
      // check which function has been called and do something in the app, e.g. open the camera 
     } 
} 

К сожалению, этот подход в приложении WinRT невозможен. Всякий раз, когда я нажимаю такую ​​ссылку, запускающая программа открывается с сообщением «Поиск приложения в магазине». Обработчик «NavigationCompleted» WebView не вызывается - этот щелчок по ссылке улавливается перед вызовом любого обработчика WebView.

Подход, который будет работать, использует обработчик UnsupportedUriSchemeIdentified, который, к сожалению, доступен только с Windows 10 в UWP. Другим решением было бы полностью переписать мой веб-сайт так, чтобы можно было вызвать обработчик ScriptNotify - это было бы слишком много работать, поскольку веб-сайт теперь также работает в обычных браузерах, устройствах Android и iOS, поэтому этот подход определенно не стоит беда.

Кто-нибудь знает решение? Благодарю.

+0

Что такое «приложение, которое работает в UWP WebView для Windows Phone 8.1»? Это WP8.1 Silverlight, WP8.1 WinRT или UWP-приложение? – sibbl

+0

Спасибо, я уточнил свою формулировку - это в основном веб-сайт, который работает внутри WP8.1 WinRT – Velarion

ответ

0

Я говорил об этом с MSFT некоторое время. Ваше право, с win10, поэтому это событие было добавлено. Лучший способ обходного пути - изменить сайт.

+0

Плохая новость, но спасибо за ответ! – Velarion

+0

Да, нам тоже пришлось менять сайт. Мы сделали это с проверкой строки пользовательского агента. К сожалению, у этого есть свои проблемы. Вы можете установить строку пользовательского агента один раз с помощью одной навигации, но нет способа поддерживать агент пользователя таким образом. Мы нашли API win32 для глобальной настройки пользовательского агента webview, и мы использовали его со специальным процессом сертификации. – Quincy

Смежные вопросы