private void SendNotification(JObject payload, string deviceToken, BarkMessage barkMessage) { if (apnsBroker == null) { return; } if (deviceToken.Length != DeviceTokenLength) { return; } try { // 队列发送一个通知 apnsBroker.QueueNotification(new ApnsNotification { DeviceToken = deviceToken,//这里的deviceToken是ios端获取后传递到数据库统一记录管理的,有效的Token才能保证推送成功 Payload = payload }); OnSend?.Invoke(this, new SendEventArgs(payload, deviceToken, barkMessage)); } catch (Exception) { } }
/// <summary> /// 发送信息 /// </summary> /// <param name="barkMessage">信息</param> /// <param name="MY_DEVICE_TOKENS">device token 数组</param> /// <returns></returns> public bool SendMesssage(BarkMessage barkMessage, string[] MY_DEVICE_TOKENS = null) { if (apnsBroker == null) { return(false); } if (barkMessage == null) { return(false); } if (MY_DEVICE_TOKENS == null) { MY_DEVICE_TOKENS = DeviceData.DeviceTokens(); } if (MY_DEVICE_TOKENS == null) { return(false); } if (MY_DEVICE_TOKENS.Length <= 0) { return(false); } Dictionary <string, object> payload = new Dictionary <string, object>(); Dictionary <string, object> aps = new Dictionary <string, object>(); Dictionary <string, object> alert = new Dictionary <string, object>(); if (!string.IsNullOrEmpty(barkMessage.body)) { alert.Add("body", barkMessage.body); } if (!string.IsNullOrEmpty(barkMessage.title)) { alert.Add("title", barkMessage.title); } aps.Add("category", "myNotificationCategory"); aps.Add("sound", "1"); aps.Add("badge", "0"); aps.Add("mutable-content", "1"); aps.Add("alert", alert); //1 自动保存 0 不保存 payload.Add("isarchive", barkMessage.isArchive); //url地址 if (!string.IsNullOrEmpty(barkMessage.url)) { payload.Add("url", barkMessage.url); } //推送内容会自动复制到粘贴板 payload.Add("automaticallycopy", barkMessage.autoMaticallyCopy); //复制字段 if (!string.IsNullOrEmpty(barkMessage.copy)) { payload.Add("copy", barkMessage.copy); } payload.Add("aps", aps); var jsonObject = JObject.FromObject(payload); foreach (var deviceToken in MY_DEVICE_TOKENS) { SendNotification(jsonObject, deviceToken, barkMessage); } return(true); }
public SendEventArgs(JObject payload, string deviceToken, BarkMessage barkMessage) { this.payload = payload; this.deviceToken = deviceToken; this.barkMessage = barkMessage; }