我发现使用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>();

谢谢

最佳答案

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

这是here以及示例

您可以通过几种方式实现这一目标。
您可以使用自定义消息。视图模型可以注册以接收消息,然后从ReceivedRemoteNotification发送该消息。阅读有关MvvmCross中信使的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接收)

关于c# - Xamarin/Mvvmcross:收到iOS推送通知时,打开另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26439078/

10-13 04:19