gpt4 book ai didi

c# - Xamarin/Mvvmcross : Open a different view controller when a iOS push notification is received

转载 作者:行者123 更新时间:2023-11-29 12:35:33 25 4
gpt4 key购买 nike

我发现这个问题是用 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 来管理我的 View 导航。所以理想情况下,我想使用 mvvmcross 以某种方式实现此导航。在 mvvmcross 中,我会通过这样做导航到我的 ViewControler:

            this.ShowViewModel<SpecificControllerViewModel>();

谢谢

最佳答案

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

这是描述here连同例子

您可以通过几种方式实现这一目标。您可以使用自定义消息。 View 模型可以注册接收消息,您可以从 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 收到),第二种方式也可以工作

关于c# - Xamarin/Mvvmcross : Open a different view controller when a iOS push notification is received,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com