【发布时间】:2017-12-01 21:42:53
【问题描述】:
我的应用通过 Firebase 接收推送通知。现在,当通知到达时可能会发生 3 种不同的情况:
- 应用程序在前台
- 应用在后台
- 应用未运行
情况1没问题。在应用程序中收到通知确定。 只要您点击抽屉中的通知,情况 2 和 3 就可以正常工作。 在情况 2 和 3 中,当点击应用程序图标而不是抽屉图标时,应用程序根本不会收到任何通知。我已尝试从 StatusBar 获取活动通知,并且可行,但我无法从 Extras 中检索数据或将通知重新发送到等待推送通知服务。这是获取通知的实验代码。
NotificationManager notificationManager = (NotificationManager)Application.Context.GetSystemService(Context.NotificationService);
var notifications = notificationManager.GetActiveNotifications()
.Where(notif => notif.PackageName == Application.Context.PackageName);
foreach (var notification in notifications)
{
Log.Info(TAG, "OnActivityResumed: Notification in active in Status Bar: {0}", notification.Notification.ToString());
var data = notification.Notification.Extras.GetString("data");
Log.Debug("Notifier", "Data received: {0}", data);
//if (data != null)
//{
// Settings.Notification = JsonConvert.DeserializeObject<LoginNotificationParameter>(data);
//}
}
// Canceling all notifications
notificationManager.CancelAll();
问题:
- 当通知在抽屉中时,应用程序没有收到任何意图是正确的行为吗?
- 如果是这样,当用户点击应用程序图标而不是抽屉通知时,我该如何处理情况 2 和 3?
打印所有 Extras Key Values 时,我在 het Notification 中看到此数据:
06-28 16:34:13.174 20792 20792 I Notifier: OnActivityResumed: Notification is active in Status Bar: Notification(pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE semFlags=0x0 semPriority=0)
06-28 16:34:13.191 20792 20792 I Notifier: KeyIn: Extras Key: android.title Data: Login
06-28 16:34:13.191 20792 20792 I Notifier: KeyIn: Extras Key: android.subText Data:
06-28 16:34:13.191 20792 20792 I Notifier: KeyIn: Extras Key: android.template Data: android.app.Notification$BigTextStyle
06-28 16:34:13.192 20792 20792 I Notifier: KeyIn: Extras Key: android.showChronometer Data: false
06-28 16:34:13.192 20792 20792 I Notifier: KeyIn: Extras Key: android.text Data: Er is een inlogverzoek voor u ontvangen.
06-28 16:34:13.194 20792 20792 I Notifier: KeyIn: Extras Key: android.progress Data: 0
06-28 16:34:13.194 20792 20792 I Notifier: KeyIn: Extras Key: android.progressMax Data: 0
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.appInfo Data: ApplicationInfo{a27f281 nl.natuurnetwerk.notifier}
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.showWhen Data: true
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.largeIcon Data:
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.bigText Data: Er is een inlogverzoek voor u ontvangen.
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.infoText Data:
06-28 16:34:13.195 20792 20792 I Notifier: KeyIn: Extras Key: android.originatingUserId Data: 0
06-28 16:34:13.196 20792 20792 I Notifier: KeyIn: Extras Key: android.progressIndeterminate Data: false
06-28 16:34:13.196 20792 20792 I Notifier: KeyIn: Extras Key: android.remoteInputHistory Data:
【问题讨论】:
-
您是否希望通过通知更新应用中的数据?
-
该应用程序的功能是验证来自网站的登录。当用户使用 UserId/Password 登录特定网站时,会向应用程序发送通知。当应用程序打开时,它开始扫描在网站上登录后显示的二维码。通知中的信息必须与二维码中的信息相同。当这适合网站继续其主页。否则登录被拒绝。
标签: android firebase xamarin firebase-cloud-messaging notificationmanager