亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

友盟移動開發平臺.NET版本SDK

2019-11-14 13:46:56
字體:
來源:轉載
供稿:網友

由于項目需要給安卓、ios提供提送消息服務。找到了umeng這個平臺,官方竟然沒有提供.net版本的SDK,同時項目需要就拿出來和大家分享一下需要的同學們可以做個參考,建議官方提供.net版本。

這里就提供、單播、組播和廣播模式

1.接口聲明

 1  public interface IMsgService 2     { 3         /// <summary> 4         /// 單播 5         /// </summary> 6         /// <param name="msg"></param> 7         MsgDTO UniCast(string msg, string deviceId); 8  9         /// <summary>10         /// 組播11         /// </summary>12         /// <param name="msg"></param>13         MsgDTO GroupCast(string msg, int OperatorId);14 15         /// <summary>16         /// 廣播17         /// </summary>18         /// <param name="msg"></param>19         MsgDTO BroadCast(string msg);20     }
View Code

 

2.安卓服務實現

  1 public class AndroidMsgService : MsgServiceBase, IMsgService  2     {  3   4         PRotected static readonly string App_Master_Secret = AppSettingHelper.DomainSetting.GetAttribute<string>("Api/UmengMsgList/Android", "appmastersecret");  5   6         protected static readonly string App_Key = AppSettingHelper.DomainSetting.GetAttribute<string>("Api/UmengMsgList/Android", "appkey");  7   8   9         private AndroidMsgService() 10         { 11  12         } 13  14         public static readonly AndroidMsgService Instance =new AndroidMsgService(); 15  16         protected override string GetSign(string post_body) 17         { 18             return (String.Concat("POST", SendUrl, post_body, App_Master_Secret)).md5().ToLower(); 19         } 20  21         public MsgDTO BroadCast(string msg) 22         { 23             var sendData = new 24             { 25                 appkey = App_Key, 26                 timestamp = GetTimeStamp, 27                 type = "broadcast", 28                 payload = new 29                 { 30                     display_type = "notification",// 通知,notification 31                     body = new 32                     { 33                         //custom = msg 34                         ticker =msg, 35                         title = msg, 36                         text = msg, 37                         after_open = "go_custom", 38                         custom="0" 39                     }, 40                     extra = new 41                     { 42                         key1 = "key1", 43                         key2 = "key2" 44                     } 45                 }, 46                 policy = new 47                 { 48                     // start_time = "2013-10-29 12:00:00", //定時發送 49                     expire_time = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd HH:mm:ss") 50                 }, 51                 production_mode = ProductMode, 52                 description = "測試廣播通知-android" 53             }; 54  55             //var result = this.GetResult(sendData, GetSign(sendData.ToJson())); 56             //return result; 57  58             var result = this.GetResult(sendData); 59             return result; 60         } 61  62         public MsgDTO GroupCast(string msg, int operatorId) 63         { 64             var sendData = new 65             { 66                 appkey = App_Key, 67                 timestamp = GetTimeStamp, 68                 type = "groupcast", 69                 filter = new 70                 { 71                     where = new 72                     { 73                         and = new[] 74                         { 75                             new {tag=operatorId.ToString()} 76                         } 77                     } 78                 }, 79                 payload = new 80                 { 81                     display_type = "notification", // 通知,notification 82                     body = new 83                     { 84                         //custom = msg 85                         ticker = msg, 86                         title = msg, 87                         text = msg, 88                         after_open = "go_custom", 89                         custom = "0" 90                     }, 91                     extra = new 92                     { 93                         key1 = "key1", 94                         key2 = "key2" 95                     } 96                 }, 97                 policy = new 98                 { 99                     expire_time = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd HH:mm:ss")100                 },101                 production_mode = ProductMode,102                 description = "測試組播通知-Android"103             };104             var result = base.GetResult(sendData);105             return result;106         }107 108         public MsgDTO UniCast(string msg, string deviceId)109         {110 111             var sendData = new112             {113                 appkey = App_Key,114                 timestamp = GetTimeStamp,115                 type = "unicast",116                 device_tokens = deviceId,117                 payload = new118                 {119                     display_type = "notification", // 消息,message120                     body = new121                     {122                         //custom = msg123                         ticker = msg,124                         title = msg,125                         text = msg,126                         after_open = "go_custom",127                         custom = "0"128                     },129                     extra = new130                     {131                         key1= "key1",132                         key2= "key2"133                     }134                 },135                 production_mode= ProductMode,136                 description = "測試單播"137             };138             var result = base.GetResult(sendData);139             return result;140 141         }142 143 144     }
View Code

3.IOS服務實現

  1 public class IosMsgService : MsgServiceBase, IMsgService  2     {  3         protected static readonly string App_Master_Secret = AppSettingHelper.DomainSetting.GetAttribute<string>("Api/UmengMsgList/IOS", "appmastersecret");  4   5         protected static readonly string App_Key =  6             AppSettingHelper.DomainSetting.GetAttribute<string>("Api/UmengMsgList/IOS", "appkey");  7   8         public static readonly IosMsgService Instance = new IosMsgService();  9  10         private IosMsgService() 11         { 12              13         } 14  15         protected override string GetSign(string post_body) 16         { 17             return (String.Concat("POST", SendUrl, post_body, App_Master_Secret)).MD5().ToLower(); 18         } 19  20         public MsgDTO BroadCast(string msg) 21         { 22             var sendData = new 23             { 24                 appkey = App_Key, 25                 timestamp = GetTimeStamp, 26                 type = "broadcast", 27                 payload = new 28                 { 29                     aps = new { alert = msg } // 蘋果必填字段 30                 }, 31                 policy = new 32                 { 33                     // start_time = "2013-10-29 12:00:00", //定時發送 34                     expire_time = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd HH:mm:ss") 35                 }, 36                 production_mode = ProductMode, 37                 description = "測試廣播通知-iOS" 38             }; 39  40             //var result = RequestHelper.HttpUtil<MsgDTO>(String.Concat(SendUrl, $"?sign={GetSign(sendData.ToJson())}"), sendData); 41             //return result; 42  43             var result = this.GetResult(sendData); 44             return result; 45         } 46  47         public MsgDTO GroupCast(string msg,int operatorId) 48         { 49             var sendData = new 50             { 51                 appkey = App_Key, 52                 timestamp = GetTimeStamp, 53                 type = "groupcast", 54                 filter = new 55                 { 56                     where = new 57                     { 58                         and = new [] 59                         { 60                             new {tag=operatorId.ToString()} 61                         } 62                     } 63                 }, 64                 payload = new 65                 { 66                     aps = new { alert = msg } // 蘋果必填字段 67                 }, 68                 policy = new 69                 { 70                     expire_time = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd HH:mm:ss") 71                 }, 72                 production_mode = ProductMode, 73                 description = "測試組播通知-IOS" 74             }; 75             var result = base.GetResult(sendData); 76             return result; 77             //var result = RequestHelper.HttpUtil<MsgDTO>(String.Concat(SendUrl, $"?sign={GetSign(sendData.ToJson())}"), sendData); 78             //return result; 79         } 80  81         public MsgDTO UniCast(string msg, string deviceId) 82         { 83             var sendData = new 84             { 85                 appkey = App_Key, 86                 timestamp = GetTimeStamp, 87                 type = "unicast", 88                 device_tokens = deviceId, 89                 payload = new 90                 { 91                     aps = new 92                     { 93                         alert = msg 94                     } // 蘋果必填字段 95                 }, 96                 policy = new 97                 { 98                     expire_time = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd HH:mm:ss") 99                 },100                 production_mode= ProductMode,101                 description = "測試單播消息"102             };103             var result = base.GetResult(sendData);104             return result;105             //var result = RequestHelper.HttpUtil<MsgDTO>(String.Concat(SendUrl, $"?sign={GetSign(sendData.ToJson())}"), sendData);106             //return result;107         }108     }
View Code

4.MsgServiceBase服務基類

 1 public abstract class MsgServiceBase 2     { 3         protected static readonly string SendUrl = AppSettingHelper.DomainSetting.GetValue("Api/UmengMsgList/RequestUrl"); 4  5         protected static readonly string ProductMode = AppSettingHelper.DomainSetting.GetAttribute<string>("Api/UmengMsgList", "productmode"); 6  7         protected abstract string GetSign(string sendData); 8  9         protected string GetTimeStamp => (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds.ToString(10             "#");11 12         protected MsgDTO GetResult(dynamic sendData)13         {14             15             var result = RequestHelper.HttpUtil<MsgDTO>(String.Concat(SendUrl, $"?sign={this.GetSign(JsonConvert.SerializeObject(sendData))}"), sendData);16             return result;17         }18     }
View Code

5.HttpUtil

 1 public static T HttpUtil<T>(string url, dynamic data) where T :new() 2         { 3             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 4             request.ContentType = "application/x-www-form-urlencoded"; //設置HTTP頭 5             request.Method = "POST"; 6  7             //byte[] postdata = Encoding.UTF8.GetBytes(data); 8             byte[] postdata = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data)); 9             request.ContentLength = postdata.Length;10 11             Stream newStream = request.GetRequestStream();12             newStream.Write(postdata, 0, postdata.Length);13             newStream.Close();14             15 16 17             HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();18             StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);19            return  (reader.ReadToEnd()).FromJson<T>();//得到結果20         }
View Code

 貼上源碼:http://files.VEVb.com/files/zpc870921/Common.rar


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线视频2019最新视频| 久久久久久一区二区三区| 欧美大片大片在线播放| 久久精品影视伊人网| 日韩精品一区二区视频| 中文字幕亚洲国产| 日本一本a高清免费不卡| 热久久免费视频精品| 欧美高清一级大片| 91黄色8090| 6080yy精品一区二区三区| 国产精品亚洲欧美导航| 在线精品视频视频中文字幕| 亚洲欧洲偷拍精品| 欧美激情欧美激情| 欧美午夜精品久久久久久久| 色婷婷**av毛片一区| 日韩免费电影在线观看| 欧美一级黄色网| 成人免费视频xnxx.com| 97色在线视频| 这里只有精品久久| 国色天香2019中文字幕在线观看| 亚洲女在线观看| 欧美激情国产精品| 日韩免费不卡av| 尤物九九久久国产精品的分类| 欧美在线性视频| 国产97人人超碰caoprom| 欧美亚洲成人网| 国产精品爱啪在线线免费观看| 国产精品久久久久久久久久久新郎| 亚洲成在人线av| 色偷偷91综合久久噜噜| 欧美视频在线视频| 欧美色道久久88综合亚洲精品| 91久久精品美女| 伊人久久综合97精品| 亚洲国产私拍精品国模在线观看| 欧美性一区二区三区| 在线视频日韩精品| 欧美在线视频一区二区| 精品久久久精品| 日日摸夜夜添一区| 欧美激情在线有限公司| 精品亚洲一区二区三区在线播放| 欧美老女人性生活| 成人网在线免费观看| 国产一区二区三区在线看| 亚洲综合精品伊人久久| 亚洲美女在线观看| 欧美日韩aaaa| 福利视频一区二区| 国产成人一区二区三区电影| 一区二区av在线| 国产成人一区二区| 国内精品久久久久久| 中文日韩在线观看| 国产成人亚洲综合91| 97av在线播放| 97国产在线视频| 日韩精品高清在线观看| 欧美国产日本在线| 色噜噜狠狠狠综合曰曰曰88av| 亚洲一品av免费观看| 国产精品十八以下禁看| 日韩美女av在线免费观看| 亚洲成人网久久久| 97香蕉超级碰碰久久免费软件| 亚洲国产日韩欧美在线图片| 在线看片第一页欧美| 欧美激情一区二区三区久久久| 亚洲国产精品网站| 久久久999精品免费| www.xxxx精品| 国产一区二区三区视频在线观看| 久久全国免费视频| 久久6精品影院| 国产一区二区精品丝袜| 日韩中文字幕亚洲| 久久91精品国产91久久久| 色午夜这里只有精品| 久久亚洲综合国产精品99麻豆精品福利| 日韩国产中文字幕| 国产精品香蕉av| 伊人久久精品视频| 欧美另类99xxxxx| 97国产在线观看| 日本精品久久中文字幕佐佐木| 亚洲第一免费播放区| 精品国产一区二区三区久久狼5月| 国模精品一区二区三区色天香| 国产精品久久久久久久久久| 久久亚洲精品国产亚洲老地址| 亚洲一区二区三区在线免费观看| 国产精品h在线观看| 亚洲欧美综合精品久久成人| 国产日韩欧美影视| 在线观看视频亚洲| 久久久久www| 午夜免费久久久久| 中文字幕av一区二区三区谷原希美| 91久久久久久久久| 成人福利视频网| 欧美性受xxxx白人性爽| 久久久久久久久爱| 久久久av网站| 国产在线一区二区三区| 最好看的2019的中文字幕视频| 精品美女久久久久久免费| 亚洲精品动漫100p| 亚洲精品乱码久久久久久按摩观| 午夜精品美女自拍福到在线| 一本色道久久综合狠狠躁篇的优点| 国产精品久在线观看| 欧美日韩亚洲系列| 欧美日韩国产中文精品字幕自在自线| 精品久久久香蕉免费精品视频| 久久久久久久久久久国产| 91国产精品视频在线| 欧亚精品中文字幕| 91香蕉电影院| 欧美激情久久久久| 欧美在线观看网址综合| 午夜美女久久久久爽久久| 国产精品视频导航| 亚洲精品免费在线视频| 欧美在线激情网| 久久久久久免费精品| 亚洲精品电影网在线观看| 国产精品福利在线观看| 亚洲韩国青草视频| 欧美一级视频一区二区| 91大神在线播放精品| 国产精品久久久久久av| 国内精品一区二区三区四区| 91精品国产成人| 91豆花精品一区| 久久99久国产精品黄毛片入口| 久久久爽爽爽美女图片| 狠狠色狠狠色综合日日小说| 日韩精品中文字幕有码专区| 亚洲精品久久久一区二区三区| 亚洲第一国产精品| 国产精品成熟老女人| 欧美视频专区一二在线观看| 久久精品国产久精国产一老狼| 精品亚洲一区二区| 欧美日韩成人免费| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲最大福利视频网| 久久久欧美精品| 久久成年人免费电影| 96pao国产成视频永久免费| 亚洲欧美中文日韩在线v日本| 日本午夜精品理论片a级appf发布| 国产亚洲精品久久久久久牛牛| 中文字幕亚洲一区| 欧美午夜xxx| 欧美精品在线免费观看| 久久精品视频导航| 欧美在线免费视频| 九九九热精品免费视频观看网站| 久久久久一本一区二区青青蜜月|