/// <summary> /// Call server to remove message /// </summary> /// <param name="messageId"></param> /// <param name="callback"></param> private void RemoveMessage(Message message, Action<string, Exception> callback) { Dictionary<string, object> data = new Dictionary<string, object>(); data.Add(ApiKey_Key, ApiKey); data.Add(UserId_Key, UserId); data.Add( message.IsPush ? HTMLMessageId_Key : MessageId_Key, message.IsPush ? message.htmlMessageId : message.messageId); ExecuteRequest("rulegrid/mobile/message/removeMessage", data, callback); }
/// <summary> /// Call server to notify about opened message /// </summary> /// <param name="messageId"></param> /// <param name="callback"></param> private void NotifyMessageOpened(Message message, Action<string, Exception> callback) { Dictionary<string, object> data = new Dictionary<string, object>(); data.Add(ApiKey_Key, ApiKey); data.Add(UserId_Key, UserId); data.Add(MessageId_Key, message.messageId); data.Add(HTMLMessageId_Key, message.htmlMessageId); if( message.IsPush == true ) data.Add(CampaignId_Key, message.campaignId); ExecuteRequest("rulegrid/mobile/message/messageOpened", data, callback); }
private void GetPushedMessages(Action<Message[], Exception> callback) { Dictionary<string, object> data = new Dictionary<string, object>(); data.Add(ApiKey_Key, ApiKey); data.Add(UserId_Key, UserId); ExecuteRequest("rulegrid/mobile/message/getPushedMessages", data, (result, ex) => { if (result != null) { try { PushMessage[] pushMessages = JsonConvert.DeserializeObject<PushMessage[]>(result); Message[] messages = new Message[pushMessages.Length]; for (int i = 0; i < pushMessages.Length; i++) { messages[i] = new Message(); messages[i].fillFromPushMessage(pushMessages[i]); } callback(messages, null); } catch (JsonSerializationException e) { callback(null, e); } // GetMessagesHtml(messages, 0, callback); } else { callback(null, ex); } }); }
/// <summary> /// Get html body for all messages with recursion /// </summary> /// <param name="messages"></param> /// <param name="index"></param> /// <param name="callback"></param> private void GetMessagesHtml(Message[] messages, int index, Action<Message[]> callback) { if(index >= messages.Length) { _dispatcher.Post(state => callback(messages), null); return; } Dictionary<string, object> data = new Dictionary<string, object>(); data.Add(ApiKey_Key, ApiKey); data.Add(UserId_Key, UserId); data.Add(HTMLMessageId_Key, messages[index].htmlMessageId); data.Add(MessageId_Key, messages[index].messageId); data.Add(CampaignId_Key, messages[index].campaignId); WebClient webClient = new WebClient(); webClient.Headers["Content-Type"] = "application/json"; String httpBody = JsonConvert.SerializeObject(data); webClient.UploadStringAsync(new Uri(new Uri(ServerUrl), "rulegrid/mobile/message/getPhoneHTML"), "PUT", httpBody); webClient.UploadStringCompleted += (sender, e) => { if(e.Error == null) { messages[index].Html = e.Result; } GetMessagesHtml(messages, index + 1, callback); }; }
/// <summary> /// Remove message /// </summary> /// <param name="messageId"></param> internal void RemoveMessage(Message message) { RemoveMessage(message, null); }
/// <summary> /// notify that message was shown to user /// </summary> /// <param name="messageId"></param> internal void NotifyMessageOpened(Message message) { NotifyMessageOpened(message, null); }