gpt4 book ai didi

android - Xamarin-Android Mvvmcross - 点击收到的通知启动应用程序启动或带到前面

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:27 28 4
gpt4 key购买 nike

我正在尝试为以下要求创建一个简洁的解决方案:

a) 当用户“点击”我的应用程序收到的通知并且该应用程序处于打开状态和/或处于后台时,该应用程序将被带到字体。

b) 当用户“点击”通知并关闭应用程序时,启动画面会显示,应用程序将像往常一样启动。

我正在尝试,但遗憾的是,我只能通过上述任一选项获得成功,而不是同时成功。这是我的代码:

    public void CreateNotification(string title, string desc, string pushUrl, string pushTitle)
{
var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(ApplicationContext);
setupSingleton.EnsureInitialized();

if (!string.IsNullOrWhiteSpace(pushUrl))
{
var pushMessageParameterService = Mvx.Resolve<IPushMessageParameterService>();
pushMessageParameterService.SetPushActionParameters(new PushActionParameters
{
UrlToShow = pushUrl,
ViewTitle = pushTitle
});
}

var intent = new Intent(this, typeof(SplashScreen));
intent.AddFlags(ActivityFlags.NewTask);
intent.SetAction(Intent.ActionMain);
intent.AddCategory(Intent.CategoryLauncher);

//var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
//var pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0);
var pendingIntent = PendingIntent.GetActivity(this, 0, intent.SetFlags(ActivityFlags.BroughtToFront), PendingIntentFlags.CancelCurrent);

Uri alarmSound = RingtoneManager.GetDefaultUri(RingtoneType.Notification);

var notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentTitle(title)
.SetContentText(desc)
.SetAutoCancel(true)
.SetSound(alarmSound)
.SetContentIntent(pendingIntent);

var notificationManager = (NotificationManager)GetSystemService(Context.NotificationService);
Notification notification = notificationBuilder.Build();
notification.Flags = NotificationFlags.ShowLights | NotificationFlags.AutoCancel;

notificationManager.Notify(0, notification);
}

为简单起见,我有两个 Activity :

public class SplashScreen : MvxSplashScreenActivity

public class DashboardView : BaseMvxActivity

如果我使用“SplashScreen”作为通知的 PendingIntent,并且应用程序已经启动/打开/在后台,它会卡在 splashScreen 处。 MvvmCross 日志记录显示“正在显示 ViewModel DashboardViewModel”但停在那里。不会调用 OnCreate、Init 和 Start。飞溅只是留下来。

如果我使用“DashboardView”作为通知的 PendingIntent 并且应用程序已关闭/未激活,那么我只会在启动时看到一个白屏并且没有启动画面。

我希望两全其美:)。因此,当点击推送消息并打开应用程序时,只需将应用程序置于最前面(如果尚未打开)。当应用程序关闭时,显示启动画面等。

我希望我已经把我的问题说清楚了。

非常感谢。

最佳答案

当我尝试将 MvxSplashScreenActivity 用于我的通知 Intent 时,它在该屏幕上卡住。

我让它指向一个标准的 MvxActivity 并自己设置背景,以及 Activity 属性上的 NoHistory = true。在我未决 Activity 的 OnCreate 中,我让它启动了真正的 Intent 。

关于android - Xamarin-Android Mvvmcross - 点击收到的通知启动应用程序启动或带到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001565/

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