Xamarin / Mvvmcross: открыть другой контроллер представления при получении push-уведомления iOS

1

Я нашел этот вопрос, заданный с помощью Objective-c, но я не могу перевести его на С#

например, open-specific-view-when-opening-app-from-notification

В основном я хочу это сделать:

public override void ReceivedRemoteNotification (UIApplication application, NSDictionary userInfo)
    {
        string alert = (aps[new NSString("alert")] as NSString).ToString();
        Debug.WriteLine ("I want to open a specific ViewController and pass in my alert");
    }

Я фактически использую mvvmcross для управления навигацией View. Поэтому в идеале я хочу как-то реализовать эту навигацию, используя mvvmcross. В mvvmcross я перешел к моему ViewControler, выполнив следующее:

            this.ShowViewModel<SpecificControllerViewModel>();

благодаря

Теги:
xamarin
mvvmcross

1 ответ

1
Лучший ответ

если вы посмотрите на параметры ShowViewModel(), у него есть способ передать значения в модель представления

это описано здесь вместе с примерами

Вы можете добиться этого несколькими путями. Вы можете использовать специальное сообщение. Модель просмотра может зарегистрироваться для получения сообщения, и вы отправляете его из ReceivedRemoteNotification Читайте здесь о Messenger в MvvmCross.

Или вы можете вызвать ShowViewModel. Если вы посмотрите на то, как здесь реализуется ShowViewModel, он использует службу IMvxViewDispatcher, поэтому у вас может быть следующий метод утилиты:

    static void ShowViewModel<T>(object parameter) where T : IMvxViewModel
    {
        var viewDispatcher = Mvx.Resolve<IMvxViewDispatcher>();
        var request = MvxViewModelRequest.GetDefaultRequest(typeof(T));
        request.ParameterValues = ((object)parameter).ToSimplePropertyDictionary();
        viewDispatcher.ShowViewModel(request);
    }

Я отправил об этом на моем блоге здесь.

Я думаю, что второй способ может работать даже в том случае, когда уведомление получено, когда приложение не работает (получено FinishedLaunching)

  • 0
    Привет Андрей. Да, я знаю об этом. Но как получить из события ReceivedRemoteNotification в моей модели представления моя проблема
  • 0
    Хорошо, теперь я понимаю, что вы имеете в виду, я отредактировал свой пост
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню