c# - 如何从远程推送通知单击恢复应用程序
问题描述
我正在使用 firebase 将推送通知从服务器发送到我的应用程序,消息如下所示:
var message = new Message()
{
Notification = new Notification()
{
Title = "Title - Test",
Body = "Body - Test",
},
Token = registrationToken
};
通知通过设备没有问题。单击通知时,我想要的只是在应用程序关闭时启动应用程序(这有效),如果应用程序在后台运行,则应用程序恢复。
当它在后台并单击通知时,我只会得到一个白屏。当我删除启动画面时,问题似乎消失了,但这不是一个理想的解决方案......这是相关代码,我做错了什么?
飞溅活动:
[Activity(Label = "MyApp",
Theme = "@style/splashscreen",
MainLauncher = true,
NoHistory = true)]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}
protected override void OnResume()
{
base.OnResume();
var mainActivityIntent = new Intent(this, typeof(MainActivity));
mainActivityIntent.AddFlags(ActivityFlags.SingleTop | ActivityFlags.NoAnimation);
StartActivity(mainActivityIntent);
this.Finish();
}
public override void OnBackPressed() { }
}
主要活动:
[Activity(Label = "MyApp",
Theme = "@style/MainTheme",
LaunchMode = LaunchMode.SingleTop,
MainLauncher = false,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.FullSensor)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
public static MainActivity MainActivityInstance { get; private set; }
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
this.Window.SetFlags(WindowManagerFlags.KeepScreenOn, WindowManagerFlags.KeepScreenOn);
this.Window.SetSoftInputMode(SoftInput.AdjustPan);
Forms.Init(this, savedInstanceState);
MainActivityInstance = this;
LoadApplication(new App());
}
解决方案
在 SplashActivity 上的 OnResume 方法中将 ActivityFlags.ClearTop 添加到 mainActivityIntent.AddFlags() 似乎有效:
protected override void OnResume()
{
base.OnResume();
var mainActivityIntent = new Intent(this, typeof(MainActivity));
mainActivityIntent.AddFlags(ActivityFlags.NoAnimation | ActivityFlags.SingleTop | ActivityFlags.ClearTop);
StartActivity(mainActivityIntent);
this.Finish();
}
推荐阅读
- email - 电子邮件提供商、位置和反垃圾邮件
- python - 迭代numpy数组,np.ndindex弄得一团糟
- sum - 根据 Power BI 中模型的不同列求和
- r - Shiny App 中的详细信息/摘要手风琴未在 Google Chrome 中显示下拉箭头?
- flutter - 断言失败:第 42 行第 16 行:'path.isNotEmpty':不正确。扑
- javascript - 在 Shopware 6 中覆盖现有的插件 JS
- selenium - 用户代理和检测
- c# - 如何编译 C 字符串并执行它 C#
- node.js - 如何绕过CORS?
- css - 如何垂直对齐诗歌中不完整的诗句(戏剧风格)?