【问题标题】:Xamarin/Mvvmcross: Open a different view controller when a iOS push notification is receivedXamarin/Mvvmcross:收到 iOS 推送通知时打开不同的视图控制器
【发布时间】:2014-10-18 11:07:06
【问题描述】:

我发现这个问题是使用 Objective-c 提出的,但我无法将其翻译成 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 来管理我的视图导航。所以理想情况下,我想以某种方式使用 mvvmcross 实现这种导航。在 mvvmcross 中,我将通过以下方式导航到我的 ViewControler:

            this.ShowViewModel<SpecificControllerViewModel>();

谢谢

【问题讨论】:

    标签: c# ios xamarin mvvmcross


    【解决方案1】:

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

    这是在here 连同示例一起描述的

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

    或者,您可以调用 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接收),第二种方式也可以工作

    【讨论】:

    • 你好安德烈。是的,我知道这一点。但是如何从 ReceivedRemoteNotification 事件中获取到我的视图模型是我的问题
    • 这回答了你的问题吗?
    猜你喜欢
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多