.NET對接極光消息推送的實現方法
什麼是APP消息推送?
很多手機APP會不定時的給用戶推送消息,例如一些新聞APP會給用戶推送用戶可能感興趣的新聞,或者APP有更新瞭,會給用戶推送是否選擇更新的消息等等,這就是所謂的“消息推送”。
更多APP消息推送的介紹可查閱該篇文章:十分鐘帶你瞭解APP消息推送(Push)👉
如下是我們日常生活中常見的一些APP消息推送示例:
強營銷類:
直接把營銷力度,營銷模式以一種叫賣式方式展現出來,目的通過優惠,時效性勾起用戶貪小便宜的心理,好奇心理,如下所示:
強關聯性:
在信息爆炸的時代,大腦會自動篩選對自己有價值的信息和沒價值的信息,如果在一條信息中有@你,您之類的言語,大腦會自動識別,使用直接關聯的技巧在於巧用“你”相關的字眼。
強熱點:熱點對眼球的吸引程度不言而喻,但是追熱點這些事情呢,新聞資訊類由於其自身的屬性,在熱點話題這一塊有天然優勢,而其他類型的APP對熱點的解讀和追蹤多少差強人意,尤其文案書寫這塊,沒有杜蕾斯這樣的能力,就別強撩用戶,適得其反反而顯得沒水平。
強話題性:
營銷界有這麼一句話,沒有違和感就創造不瞭傳播,不出位就制造不瞭話題,那麼強話題性的文案自帶傳播屬性,一般都會擊中用戶內心的某個感觸,比如對社會的憤世嫉俗,對高房價的逆反心理,對旅遊的文藝心等等。
極光推送介紹
JPush 是經過考驗的大規模 App 推送平臺,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制臺發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平臺。
為什麼選擇極光作為APP的消息推送平臺?
- 首先極光推送支持多平臺推送
- 支持大規模的消息推送極光推送
- 對接方便,不同後端語言都提供瞭對應的SDK
- 對於免費賬號支持也非常的友好(不過免費賬號高峰期有資源瓶頸,假如需要及時性很強的話可以購買高級版收費服務)
特權對比👉
快速對接Jpush極光推送
極光詳細對接文檔👉
- 到極光推送官方網站註冊開發者帳號;
- 登錄進入管理控制臺,創建應用程序,得到 Appkey(SDK 與服務器端通過 Appkey 互相識別);
- 在推送設置中給 Android 設置包名、給 iOS 上傳證書、啟用 WinPhone,根據你的需求進行選擇;
.NET FX 4.5項目接入
該項目是基於C#/.NET(.NET Framework4.5.1的示例)極光推送對接實例,主要是對接極光集成為我們.Neter提供的SKD。在這裡我主要封裝瞭單個設備註冊ID推送,設備註冊ID批量推送和廣播推送三種推送三種方式,其他的推送方式大傢可以參考文檔去進行封裝。
JPuhs-Sample👉(封裝示例源碼)
1、在項目中引入Jiguang.JPush nuget包
2、極光推送調用
namespace Jpush.Controllers { /// <summary> /// 極光推送管理 /// </summary> public class JPushManageController : Controller { private readonly JPushClientUtil _jPushClientUtil; public JPushManageController(JPushClientUtil jPushClientUtil) { this._jPushClientUtil=jPushClientUtil; } /// <summary> /// 單個設備註冊ID推送 /// </summary> /// <returns></returns> public ActionResult SendPushByRegistrationId() { var isOk = _jPushClientUtil.SendPushByRegistrationId("追逐時光者歡迎你!", "2022新年快樂", "1507bfd3f715abecfa4", new Dictionary<string, object>(), true); return Json(new { result = isOk }); } /// <summary> /// 設備註冊ID批量推送(一次推送最多1000個) /// </summary> /// <returns></returns> public ActionResult SendPushByRegistrationIdList() { var registrationIds = new List<string>() { "1507bfd3f715abecfa455", "1507bfd3f715abecfa433", "1507bfd3f715abecfa422" }; var isOk = _jPushClientUtil.SendPushByRegistrationIdList("追逐時光者歡迎你!", "2022新年快樂", registrationIds, new Dictionary<string, object>(), true); return Json(new { result = isOk }); } /// <summary> /// 廣播推送 /// </summary> /// <returns></returns> public ActionResult BroadcastPush() { var isOk = _jPushClientUtil.BroadcastPush("追逐時光者歡迎你!", "2022新年快樂", new Dictionary<string, object>(), true); return Json(new { result = isOk }); } } }
3、極光推送工具類(JPushClientUtil)
namespace Jpush.Common { /// <summary> /// 極光推送工具類 /// </summary> public class JPushClientUtil { private const string appKey = "youAppKey"; private const string masterSecret = "youMasterSecret"; private static JPushClient client = new JPushClient(appKey, masterSecret); /// <summary> /// 單個設備註冊ID推送 /// </summary> /// <param name="title">推送標題(Android才會存在)</param> /// <param name="noticeContent">通知內容</param> /// <param name="registrationid">設備註冊ID(registration_id)</param> /// <param name="extrasParam">拓展參數(傳入App接收的一些參數標識)</param> /// <param name="isApnsProduction">註意:iOS是否推送生產環境(true是,false否推開發環境)</param> /// <returns></returns> public bool SendPushByRegistrationId(string title, string noticeContent, string registrationid, Dictionary<string, object> extrasParam = null, bool isApnsProduction = true) { //設備標識參數拼接 var pushRegistrationId = new RegistrationIdList(); pushRegistrationId.registration_id.Add(registrationid); return JPushBaseSendMessage(title, noticeContent, isApnsProduction, pushRegistrationId, extrasParam); } /// <summary> /// 設備註冊ID批量推送(一次推送最多1000個) /// </summary> /// <param name="title">推送標題(Android才會存在)</param> /// <param name="noticeContent">通知內容</param> /// <param name="registrationIds">註冊ID(registration_id)列表,一次推送最多1000個</param> /// <param name="extrasParam">拓展參數(傳入App接收的一些參數標識)</param> /// <param name="isApnsProduction">註意:iOS是否推送生產環境(true是,false否推開發環境)</param> /// <returns></returns> public bool SendPushByRegistrationIdList(string title, string noticeContent, List<string> registrationIds, Dictionary<string, object> extrasParam = null, bool isApnsProduction = true) { //設備標識參數拼接 var pushRegistrationId = new RegistrationIdList(); pushRegistrationId.registration_id.AddRange(registrationIds); return JPushBaseSendMessage(title, noticeContent, isApnsProduction, pushRegistrationId, extrasParam); } /// <summary> /// 廣播推送 /// </summary> /// <param name="title">推送標題(Android才會存在)</param> /// <param name="noticeContent">通知內容</param> /// <param name="extrasParam">拓展參數(傳入App接收的一些參數標識)</param> /// <param name="isApnsProduction">註意:iOS是否推送生產環境(true是,false否推開發環境)</param> /// <returns></returns> public bool BroadcastPush(string title, string noticeContent, Dictionary<string, object> extrasParam = null, bool isApnsProduction = true) { return JPushBaseSendMessage(title, noticeContent, isApnsProduction, null, extrasParam, true); } /// <summary> /// 極光消息推送公共方法 /// </summary> /// <param name="title">推送標題(Android才會存在)</param> /// <param name="noticeContent">通知內容</param> /// <param name="pushRegistrationId">設備註冊ID(registration_id)</param> /// <param name="isApnsProduction">iOS是否推送生產環境(true是,false否推開發環境)</param> /// <param name="extrasParam">拓展參數</param> /// <param name="isRadioBroadcast">是否廣播</param> /// <returns></returns> private bool JPushBaseSendMessage(string title, string noticeContent, bool isApnsProduction, RegistrationIdList pushRegistrationId, Dictionary<string, object> extrasParam, bool isRadioBroadcast = false) { try { object audience = pushRegistrationId; if (isRadioBroadcast) { audience = "all"; } var pushPayload = new PushPayload() { Platform = new List<string> { "android", "ios" },//推送平臺設置 Audience = audience,//推送目標 //notifacation:通知內容體。是被推送到客戶端的內容。與 message 一起二者必須有其一,可以二者並存。 Notification = new Notification { Alert = noticeContent,//通知內容 Android = new Android { Alert = noticeContent,//通知內容 Title = title,//通知標題 URIActivity = "com.king.sysclearning.platform.app.JPushOpenClickActivity",//該字段用於指定開發者想要打開的 activity,值為 activity 節點的 “android:name”屬性值;適配華為、小米、vivo廠商通道跳轉 URIAction = "com.king.sysclearning.platform.app.JPushOpenClickActivity",//該字段用於指定開發者想要打開的 activity,值為 "activity"-"intent-filter"-"action" 節點的 "android:name" 屬性值;適配 oppo、fcm跳轉 Extras = extrasParam //這裡自定義JSON格式的Key/Value信息,以供業務使用。 }, IOS = new IOS { Alert = noticeContent, Badge = "+1",//此項是指定此推送的badge自動加1 Extras = extrasParam //這裡自定義JSON格式的Key/Value信息,以供業務使用。 } }, Options = new Options//可選參數 { //iOS 環境不一致問題:API 推送消息給 iOS,需要設置 apns_production 指定推送的環境,false 為開發,true 為生產。 IsApnsProduction = isApnsProduction// 設置 iOS 推送生產環境。不設置默認為開發環境。 } }; var response = client.SendPush(pushPayload); //200一定是正確。所有異常都不使用 200 返回碼 if (response.StatusCode == HttpStatusCode.OK) { return true; } else { return false; } } catch (Exception ex) { return false; } } } public class RegistrationIdList { /// <summary> /// 設備註冊ID /// </summary> public List<string> registration_id { get; set; } = new List<string>(); } }
相關鏈接地址
極光對接官方文檔
極光推送.NET-Nuget地址
極光推送.NET Core版本SDK
極光推送.NET Fx4.x版本SDK
JPuhs-Sample(封裝示例源碼)
到此這篇關於.NET對接極光消息推送的實現方法的文章就介紹到這瞭,更多相關.NET對接極光消息推送內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 詳解C#對Dictionary內容的通用操作
- .Net Core使用SignalR實現鬥地主遊戲
- C#實現鼠標消息捕獲
- C#獲取打印機列表方法介紹
- C#微信公眾號開發之用戶上下文WeixinContext和MessageContext