firebase-admin-dotnet icon indicating copy to clipboard operation
firebase-admin-dotnet copied to clipboard

duplicate messages when using send batch of messages

Open dongphh opened this issue 1 year ago • 0 comments

[READ] Step 1: Are you in the right place?

  • For issues related to the code in this repository file a Github issue.
  • For general technical questions, post a question on StackOverflow with the firebase tag.
  • For general Firebase discussion, use the firebase-talk google group.
  • For help troubleshooting your application that does not fall under one of the above categories, reach out to the personalized Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Operating System version: window 10 (19045)
  • Firebase SDK version: 2.4.0 with VS2019
  • Firebase Product: messaging (auth, database, storage, etc)
  • .NET version: 4.6.1
  • OS: windows dotnet

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

When I send a list of messages using sendEachAsync method with data read all info from my DB (about 10000 users) and loop each 500 record and send batch then received duplicate messages.

I using code follow in doc: https://firebase.google.com/docs/cloud-messaging/send-message

Relevant Code:

if (FirebaseApp.DefaultInstance == null) { FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.FromFile(Server.MapPath(ConfigurationManager.AppSettings["FCMKey"])) }); }

var messages = new List<Message>() int cnt = 0; foreach (DataRow item in iResult.CursorData.Rows) { cnt++;

                            messages.Add(new Message()
                            {
                                Notification = new Notification()
                                {
                                    Title = item["title"].ToString(),
                                    Body = item["DESCRIPTION"].ToString()
                                },
                                Token = item["GCMID"].ToString()
                            });
                           
                            if (cnt == 500 || cnt==iResult.CursorData.Rows.Count)
                            {
                                try
                                {
                                   
                                    string Obj = fcm.SendMultiNotiV2(messages);
                                    messages.Clear();
                                    
                                }
                                catch (Exception ex)
                                {
                                    messages.Clear();                                        
                                }
                                finally
                                {
                                    cnt = 0;
                                    messages.Clear();
                                  
                                }
                            }
                        }

dongphh avatar Dec 25 '23 02:12 dongphh