Я нашел этот вопрос, заданный с помощью 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>();
благодаря
если вы посмотрите на параметры 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
)