public static void Push(AMSNotificationPack notificationPack) { Push(new List <AMSNotificationPack>() { notificationPack }); }
//ของเดิม สำหรับแปลง parameter ที่ post มาเป็น json ในรูปแบบสำหรับส่ง notification public static AMSNotificationPack ConvertJsonToNotificcationPack(QueryParameter qParams) { try { AMSNotificationPack notificationPack = new AMSNotificationPack(); List <string> registration_ids = GetListFromObject(qParams["registration_ids"]).Cast <string>().ToList(); if (registration_ids.Count < 1) { throw (new Exception("registration_ids must has at least 1 token.")); } Dictionary <string, object> notification = qParams["notification"] as Dictionary <string, object>; notificationPack.to.AddRange(registration_ids); notificationPack.notification.title = notification["title"] as string; notificationPack.notification.body = notification["body"] as string; notificationPack.notification.icon = notification["icon"] as string; notificationPack.notification.badge = notification["badge"] as string; notificationPack.notification.sound = notification["sound"] as string; notificationPack.data = qParams["data"] as Dictionary <string, object>; notificationPack.priority = qParams["priority"] as string; notificationPack.content_available = Convert.ToBoolean(qParams["content_available"]); return(notificationPack); } catch (Exception e) { throw (e); } }
//ของเดิม public static void Push(List <AMSNotificationPack> notificationPacks) { try { List <AMSNotificationPack> groupedNotificationPacks = new List <AMSNotificationPack>(); foreach (AMSNotificationPack notificationPack in notificationPacks) { if (notificationPack.to.Count > 0) { int loopsCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(notificationPack.to.Count / Convert.ToDouble(_idsPerRequest)))); for (int i = 0; i < loopsCount; i++) { AMSNotificationPack groupedNotificationPack = new AMSNotificationPack(); int startIndex = i * _idsPerRequest; int size = notificationPack.to.Count - startIndex; groupedNotificationPack.to.AddRange(notificationPack.to.GetRange(startIndex, size > _idsPerRequest ? _idsPerRequest : size)); groupedNotificationPack.notification = notificationPack.notification; groupedNotificationPack.data = notificationPack.data; groupedNotificationPack.priority = notificationPack.priority; groupedNotificationPack.content_available = notificationPack.content_available; groupedNotificationPacks.Add(groupedNotificationPack); } } } foreach (AMSNotificationPack notificationPack in groupedNotificationPacks) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_fcmPushURL); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("Authorization", string.Format("key={0}", _fcmServerKey)); byte[] bytes = Encoding.UTF8.GetBytes(_jsSerializer.Serialize(notificationPack)); using (Stream outputStream = request.GetRequestStream()) { outputStream.Write(bytes, 0, bytes.Length); } new Task(() => { request.GetResponse(); }).Start(); } } catch (Exception e) { } }
private static List <AMSNotificationPack> ConvertDataTableToNotificationPacks(DataTable table) { List <AMSNotificationPack> notificationPacks = new List <AMSNotificationPack>(); if (table.Rows.Count > 0) { DataColumnCollection columns = table.Columns; foreach (DataRow row in table.Rows) { Dictionary <string, object> dataCollection = new Dictionary <string, object>(); AMSNotificationPack notificationPack = new AMSNotificationPack(); AMSNotificationConfig notification = notificationPack.notification; notificationPack.data = dataCollection; notificationPacks.Add(notificationPack); foreach (DataColumn column in columns) { string cName = column.ColumnName; string cValue = row[cName].ToString(); switch (cName) { case "REGISTRATION_ID": string[] arrValue = cValue.Split('|'); foreach (string val in arrValue) { notificationPack.to.Add(val.Trim()); } break; case "TITLE": notification.title = cValue; break; case "BODY": notification.body = cValue; break; case "ICON": notification.icon = cValue; break; case "SOUND": notification.sound = cValue; break; case "BADGE": notification.badge = cValue; break; default: dataCollection.Add(cName, cValue); break; } } } } else { throw new Exception("ไม่มี Data สำหรับส่ง Notification"); } return(notificationPacks); }