我正在尝试为以下要求创建一个简洁的解决方案:
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);
}
为了简单起见,我有两项活动:
public class SplashScreen : MvxSplashScreenActivity
和
public class DashboardView : BaseMvxActivity
如果我使用&#34; SplashScreen&#34;作为通知的PendingIntent,并且应用程序已经在后台启动/打开/挂起,它会挂起在splashScreen上。 MvvmCross日志记录显示&#34;显示ViewModel DashboardViewModel&#34;但到此为止。不调用OnCreate,Init和Start。飞溅只是停留。
如果我使用&#34; DashboardView&#34;作为通知的PendingIntent和应用程序已关闭/未激活,我只是在启动时看到白屏并且没有启动画面。
我想拥有两全其美的:)。因此,当点击推送消息并且应用程序处于打开状态时,只需将应用程序置于最前面(如果它还没有)。当应用程序关闭时,显示启动画面等等。
我希望我的问题清楚。
非常感谢提前。
答案 0 :(得分:1)
当我尝试将MvxSplashScreenActivity用于我的通知意图时,它会在该屏幕上冻结。
我指出标准的MvxActivity并自己设置背景,并在NoHistory = true
属性上设置Activity
。在我的待处理活动的OnCreate中,我开始了真正的意图。