MvvmCross Go to ViewModel on Android email notification.

I am showing a notification with Support.V7.NotificationCompat. I want to go to ViewModel when I click this notification. The navigation parameter that I pass to the ViewModel does not work when I try to show the ViewModel with MvxViewModelRequest, but it works when I use ShowViewModel as follows:

ShowViewModel<RouteModificationViewModel>(new { id = existingModification.Id });

Here is the InitModel Init method. The rule has the correct meaning when navigating through ShowViewModel. When I navigate with help MvxViewModelRequest, Guid always matters Guid.Empty(all 0).

public void Init(Guid id)
{
    _routeModificationId = id;
}

This is how I try to show the ViewModel from the notification:

public void ShowRouteModifiedNotification(RouteModificationModel routeModificationModel)
{
    var context = Application.Context;
    var builder = new NotificationCompat.Builder(context);
    builder.SetDefaults(NotificationCompat.DefaultAll);
    builder.SetCategory(NotificationCompat.CategoryStatus);
    builder.SetAutoCancel(true);
    builder.SetPriority(NotificationCompat.PriorityHigh);
    builder.SetSmallIcon(Resource.Mipmap.ic_launcher);
    builder.SetContentTitle("Route Modification");
    builder.SetContentText("Hello, World!");
    builder.SetContentIntent(GetIntent(routeModificationModel.Id));
    builder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
    builder.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification));
    var notification = builder.Build();
    var notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService);
    var handler = new Handler(Looper.MainLooper);
    handler.Post(() =>
    {
       notificationManager.Notify(RouteModificationNotificationId, notification);
    });
}

private PendingIntent GetIntent(Guid guid)
{
    var request = MvxViewModelRequest<RouteModificationViewModel>.GetDefaultRequest();
    var json = Mvx.Resolve<IMvxJsonConverter>().SerializeObject(new { id = guid });
    request.PresentationValues = new Dictionary<string, string>
    {
        { "id", json }
    };
    var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>();
    var intent = translator.GetIntentFor(request);
    return PendingIntent.GetActivity(Application.Context, 0, intent, 0);
}

Can someone see what I am missing or something is wrong?

+4
1

MvvmCross MvvmCross 5.0 . , MvvmCross 4.x 3.x. API- MvvmCross 4.x Guid. , Guid , Guid ViewModel.

0

Source: https://habr.com/ru/post/1629415/


All Articles