Xamarin / Mvvmcross:收到iOS推送通知时打开另一个视图控制器

时间:2014-10-18 11:07:06

标签: c# ios xamarin mvvmcross

我发现这个问题是使用Objective-c问的,但我无法将其翻译成C#

e.g。 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>();

由于

1 个答案:

答案 0 :(得分:1)

如果查看ShowViewModel()的参数,它可以将值传递给视图模型

这是here以及示例

的描述

您可以通过几种方式实现这一目标。 您可以使用自定义消息。视图模型可以注册接收消息,您可以通过MvvmCross中的ReceivedRemoteNotification阅读有关信使的here发送消息。

或者,您可以调用ShowViewModel。如果你看看如何实现ShowViewModel here,它使用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);
    }

我在我的博客上发布了这个帖子here

我认为即使在应用未运行时收到通知(由FinishedLaunching收到)

,第二种方式也能正常工作
相关问题