我有一个接受推送通知的应用程序。我必须将推送通知写入数据库。问题在于,在数据库中,它仅写入最后一条消息(在我重新进入应用程序之后),并且何时将应用程序置于后台,何时将其置于前台。当有新数据到达时,如何做才能使数据库保持最新状态?我接受推送,然后将其数据写入变量 [Service] [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })] public class MyFirebaseMessagingService : FirebaseMessagingService { const string TAG = "MyFirebaseMsgService"; public override void HandleIntent(Intent intent) { try { if (intent.Extras != null) { var builder = new RemoteMessage.Builder("MyFirebaseMessagingService"); foreach (string key in intent.Extras.KeySet()) { builder.AddData(key, intent.Extras.Get(key).ToString()); } this.OnMessageReceived(builder.Build()); } else { base.HandleIntent(intent); } } catch (Exception) { base.HandleIntent(intent); } } public override void OnMessageReceived(RemoteMessage message) { Log.Debug(TAG, "From: " + message.From); Log.Debug(TAG, "Notification Message Body: " + message.GetNotification().Body); SendNotification(message.GetNotification().Body, message.Data, message.GetNotification().Title); // Here I write the push - notification data into variables X.Instance.title = message.GetNotification().Title; X.Instance.body = message.GetNotification().Body; } private void OnStartCommand() { throw new NotImplementedException(); } public class X { public static X Instance = new X(); public string title; public string body; }
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
从您的代码看来,您似乎在onCreate中创建数据库实例,并在相同的onCreate方法中输入数据。我看不到您的数据库的实现方式或类型,但是我建议您在OnMessageReceived处理程序的Db中输入通知,每次收到新通知时都会调用它,而不是在onCreate中,因为由于某些设备配置(例如方向更改)而很少调用onCreate。
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消