/// <summary> /// 由外部傳來的驗證資料,組合FireBase需要做推播的功能 /// </summary> /// <param name="obj"></param> /// <returns></returns> public String PushMessage(iOSFcmPushMessage obj) { //取得user token string token = mobileRepository.GetToken("傳入user id"); string sReturn = ""; iOSFcmPushMessage fpmReturn = new iOSFcmPushMessage(); fpmReturn.APIKey = obj.APIKey; fpmReturn.RegID = obj.RegID; fpmReturn.Message = obj.Message; var result = "-1"; var webAddr = "https://fcm.googleapis.com/fcm/send"; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr); httpWebRequest.ContentType = "application/json;charset=utf-8;"; httpWebRequest.Headers.Add($"Authorization:key={fpmReturn.APIKey}"); httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { var json = new { to = fpmReturn.RegID, notification = new { body = fpmReturn.Message } }; string p = JsonConvert.SerializeObject(json);//將Linq to json轉為字串 streamWriter.Write(p); streamWriter.Flush(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { result = streamReader.ReadToEnd(); } JObject oJSON = (JObject)JsonConvert.DeserializeObject(result); if (Convert.ToInt32(oJSON["failure"].ToString()) > 0) {//有失敗情況就寫Log //EventLog.WriteEntry("發送訊息給" + RegistrationID + "失敗:" + responseStr); oJSON = (JObject)oJSON["results"][0]; if (oJSON["error"].ToString() == "InvalidRegistration" || oJSON["error"].ToString() == "NotRegistered") { //無效的RegistrationID //從DB移除 //SqlParameter[] param = new SqlParameter[] { new SqlParameter() { ParameterName = "@RegistrationID", SqlDbType = SqlDbType.VarChar, Value = RegistrationID } }; //SqlHelper.ExecteNonQuery(CommandType.Text, "Delete from tb_MyRegisID Where RegistrationID=@RegistrationID", param); } sReturn = oJSON["error"].ToString(); } //returnStr.Append(responseStr + "\n"); return(sReturn); }
public string SetPushNotification(string id) { string boolReturn = "true"; tek_repair onsite = mobileRepository.GetRepairById(id); if (onsite == null) { return("No Record!此單號" + id + "(使用者:" + onsite.tek_m_user + "),查無維修單"); } try { string user_token = mobileRepository.GetToken(onsite.tek_m_user); //status iOSFcmPushMessage fpmReturn = new iOSFcmPushMessage(); //組合要傳送的字串 fpmReturn.APIKey = "AAAAfvUhnv8:APA91bFaChaP_0X0ypjInh63Hj87kqUpDFsTkjg_pZeMSdvpOK77QmPOg5iLOjFKERawonUtVPsY9oUWQ8pKuBceHqB1VBQdwBW16w9JlpSVQ4xurPBX6pL34bFlisUZ_Spx4sNVGHcQ"; fpmReturn.RegID = user_token; fpmReturn.Message = new iOSNotificationStruct { Title = "你有一筆新的派工,維修單號:" + onsite.tek_name, Body = (onsite.tek_account + onsite.tek_remark) }; var result = "-1"; // var webAddr = "https://fcm.googleapis.com/fcm/send"; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr); httpWebRequest.ContentType = "application/json;charset=utf-8;"; httpWebRequest.Headers.Add($"Authorization:key={fpmReturn.APIKey}"); httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { //轉換傳送資料成json格式 var json = new { to = fpmReturn.RegID, notification = new { title = fpmReturn.Message.Title, body = fpmReturn.Message.Body } }; string p = JsonConvert.SerializeObject(json); //將Linq to json轉為字串 streamWriter.Write(p); streamWriter.Flush(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { result = streamReader.ReadToEnd(); } JObject oJSON = (JObject)JsonConvert.DeserializeObject(result); if (Convert.ToInt32(oJSON["failure"].ToString()) > 0) { //有失敗情況就寫Log //EventLog.WriteEntry("發送訊息給" + RegistrationID + "失敗:" + responseStr); oJSON = (JObject)oJSON["results"][0]; if (oJSON["error"].ToString() == "InvalidRegistration" || oJSON["error"].ToString() == "NotRegistered") { //無效的RegistrationID } if (oJSON["error"].ToString().Length > 0) { mobileRepository.UpdateRepairStatus(onsite.tek_name, "error", oJSON["error"].ToString()); return("false"); } //sReturn = oJSON["error"].ToString(); } else { mobileRepository.UpdateRepairStatus(onsite.tek_name, "complete", ""); } //returnStr.Append(responseStr + "\n"); return(boolReturn); } catch (Exception ex) { //throw ex; mobileRepository.UpdateRepairStatus(onsite.tek_name, "error", ex.Message); return("false"); } //finally //{ // mobileRepository.UpdateRepairStatus(onsite.tek_name, onsite.Status, ""); //} ///// <summary> ///// 維修單變更狀態 ///// </summary> ///// <param name="tek_name">維修單號</param> ///// <param name="status">狀態</param> ///// <param name="Log">Log</param> //public void UpdateRepairStatus(string tek_name, string status, string Log) }