Добавление UriMapper для WindowsPhone в универсальное приложение

Я изо всех сил пытаюсь создать универсальное приложение из существующего приложения Windows Phone 8.1. Я использовал AssociationUriMapper, как описано здесь и я не могу найти способ использовать это в универсальном приложении. Пространство имен System.Windows.Navigation не существует, поэтому я не могу переопределить UriMapperBase.

Кто-нибудь знает, где это идет не так, и что мне нужно сделать, чтобы сохранить функциональность даже в универсальном приложении (не предлагая ту же функцию в приложении для Windows 8.1)?


person malte    schedule 01.06.2014    source источник
comment
Что пытается сделать ваше приложение?   -  person Neil Turner    schedule 01.06.2014
comment
Я хочу запустить приложение WindowsPhone, вызвав определенный uri с веб-сайта. До универсального приложения я достиг этого, используя AssociationUriMapper, как описано в ссылке в моем вопросе.   -  person malte    schedule 01.06.2014
comment
@NeilTurner Спасибо! Долго искал подобную статью - теперь, когда она найдена, мой вопрос кажется глупым. Но клянусь, я перепробовал все, чтобы найти эту информацию...   -  person malte    schedule 01.06.2014
comment
Никаких проблем, много изменений в WP8.1 и т. д. — мы все еще ищем «правильную» информацию. Я напишу ответ.   -  person Neil Turner    schedule 01.06.2014


Ответы (1)


То, как приложения обрабатывают Uris при запуске, сильно изменилось со времен Windows Phone 8. Раньше приложению передавался Uri, который требовал много анализа, чтобы быть полезным — отсюда и потребность в UriMapper, который предоставляет Microsoft.

Для Windows Phone 8.1 и Windows 8.1 (т. е. универсальных приложений XAML) активация приложения обрабатывается (с помощью OpenFilePicker, ShareTarget, протокола и т. д.) с помощью метода OnActivated...

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.Protocol)
    {
        ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;

    // TODO: Handle URI activation
    // The received URI is eventArgs.Uri.AbsoluteUri
    }
}

Источник: официальная документация MSDN

После определения ActivationKind и приведения к правильному типу EventArgs остается только проанализировать параметры данных.

На этой странице также есть пример универсального приложения, в котором подробно описаны некоторые из этих сценарии.

person Neil Turner    schedule 01.06.2014
comment
Спасибо! Очень познавательно даже помимо MSDN. Спасибо, что не только ссылку дали :) - person malte; 01.06.2014
comment
@malte спасибо, навигация и жизненный цикл действительно отличаются в WP8.1 - я все еще привыкаю к ​​этому сам :) - person Neil Turner; 01.06.2014