当前位置: 首页 > 知识库问答 >
问题:

Xamarin Android OnNewIntent未被关闭的应用程序调用

慕意致
2023-03-14

什么在起作用

我已经使用以下Xamarin指南为我们的Xamarin表单应用程序的Android端实现了推送通知:

https://developer.xamarin.com/guides/android/application_funcaments/notifications/remote-notifications-with-gcm/

这非常有效,我们正确地在应用程序运行时和后台调用OnNewIntent。然后我们调用我们的方法来处理推送通知的意图,一切都很好。

protected override void OnNewIntent(Intent intent)
{
    base.OnNewIntent(intent);
    GoogleListenerService.ReceivedRemoteNotification(intent);
}

问题出在哪里

如果我们关闭应用程序,触发一个推送通知,并单击推送通知,应用程序似乎不会调用OnNewIntent,而是像单击应用程序图标(调用OnCreate)一样启动应用程序。

  1. 未调用Android OnNewIntent

Xamarin只有一个GetIntent方法,该方法需要字符串URL输入,并在null数据中使用以下结果。

Intent intent = new Intent(this, typeof(MainActivity));
Bundle data = intent.Extras;

在第二篇文章中,intent服务、mainactivity.cs文件和manifest文件中对LaunchMode=SingleTop的所有更改都没有导致行为的更改。

this.Intent.Extras;

总是显示为null(当前位于OnResume方法中)。

共有1个答案

颛孙昆
2023-03-14

在Android上接收通知时,无论你接收的是通知还是数据通知,以及应用程序的行为都是不同的。

App State  |    Notification     |        Data        |    Both
-------------------------------------------------------------------------------------
Foreground |  onMessageReceived  |  onMessageReceived | onMessageReceived
Background |  System tray        |  onMessageReceived | Notification: system tray
                                                        Data: in extras of the intent

因此,听起来像是在发送常规通知并准备pendingintent,这是当您按下onnewintent时触发该onnewintent的原因。

当应用程序在后台收到定期通知时,应用程序应该定期启动。如果已将数据附加到通知,则应该能够从intentextras属性获取数据。

所以你在这里看到的是正确的行为。

 类似资料:
  • 这是Android Studio设置的问题还是其他我不知道的问题?当我调试应用程序,并在一些调试断点(断点不是固定的每次关闭它每次都不同)它关闭应用程序,从来没有显示在调试选择过程对话框。要在调试过程中再次获得它,我需要再次运行该应用程序。 为什么这一切都会发生,是否需要任何Android Studio设置来阻止这一切发生? 我的Android Studio版本是2.2。1.任何帮助都将不胜感激。

  • 我知道这个问题在网站上被问了很多,但是,我似乎找不到一个解决办法。当应用程序未运行时,不调用我的BOOT_COMPLETED接收器。 清单: 如果应用程序正在运行,并且我使用 事件被正确接收,但是,如果应用程序被关闭,事件不会被接收,也不会在启动时被接收。 我已经安装了应用程序,然后启动了它几次,以确保它已经注册。我对这件事很迷茫,所以任何建议都将非常感谢。

  • 仅当应用程序关闭时,数据有效负载的使用不会收到任何通知,并且不会触发消息接收方法。 在下图中显示数据负载,单击此处查看参数 回复是点击这里查看回复 响应成功1,但在redmi手机中未收到任何通知。

  • 启动 1. 轻触主画面上您想启动的应用程序图标。 显示LiveArea™。 2. 轻触[开始]。 中断/继续 按下PS键即可返回LiveArea™。若要继续,请轻触[继续]。 关闭 1. 按下PS键。 返回LiveArea™。 2. 请由画面右上角将LiveArea™撕下。

  • 我开发了一个新的Android应用程序使用appcelerator。我使用ti.cloudpush来使用来自Firebase的推送通知,如本例所示;如果应用程序处于后台,则成功发送通知并显示在设备的通知栏中,但当应用程序处于前台或关闭时,则不会收到通知发送过程的结果是"成功"。 我需要使它像facebook messenger一样,在应用程序关闭时显示在设备屏幕上。我尝试了其他几个模块,如“ti.

  • 我正在Java做一个应用程序,我需要它在后台工作,当用户关闭应用程序时,他仍然保持隐藏状态