.NET對接極光消息推送的實現(xiàn)方法
什么是APP消息推送?
很多手機APP會不定時的給用戶推送消息,例如一些新聞APP會給用戶推送用戶可能感興趣的新聞,或者APP有更新了,會給用戶推送是否選擇更新的消息等等,這就是所謂的“消息推送”。
更多APP消息推送的介紹可查閱該篇文章:十分鐘帶你了解APP消息推送(Push)??
如下是我們?nèi)粘I钪谐R姷囊恍〢PP消息推送示例:
強營銷類:
直接把營銷力度,營銷模式以一種叫賣式方式展現(xiàn)出來,目的通過優(yōu)惠,時效性勾起用戶貪小便宜的心理,好奇心理,如下所示:

強關聯(lián)性:
在信息爆炸的時代,大腦會自動篩選對自己有價值的信息和沒價值的信息,如果在一條信息中有@你,您之類的言語,大腦會自動識別,使用直接關聯(lián)的技巧在于巧用“你”相關的字眼。

強熱點:熱點對眼球的吸引程度不言而喻,但是追熱點這些事情呢,新聞資訊類由于其自身的屬性,在熱點話題這一塊有天然優(yōu)勢,而其他類型的APP對熱點的解讀和追蹤多少差強人意,尤其文案書寫這塊,沒有杜蕾斯這樣的能力,就別強撩用戶,適得其反反而顯得沒水平。

強話題性:
營銷界有這么一句話,沒有違和感就創(chuàng)造不了傳播,不出位就制造不了話題,那么強話題性的文案自帶傳播屬性,一般都會擊中用戶內(nèi)心的某個感觸,比如對社會的憤世嫉俗,對高房價的逆反心理,對旅游的文藝心等等。

極光推送介紹
JPush 是經(jīng)過考驗的大規(guī)模 App 推送平臺,每天推送消息量級為數(shù)百億條。 開發(fā)者集成 SDK 后,可以通過調(diào)用 API 推送消息。同時,JPush 提供可視化的 web 端控制臺發(fā)送通知,統(tǒng)計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平臺。
為什么選擇極光作為APP的消息推送平臺?
- 首先極光推送支持多平臺推送
- 支持大規(guī)模的消息推送極光推送
- 對接方便,不同后端語言都提供了對應的SDK
- 對于免費賬號支持也非常的友好(不過免費賬號高峰期有資源瓶頸,假如需要及時性很強的話可以購買高級版收費服務)

快速對接Jpush極光推送
- 到極光推送官方網(wǎng)站注冊開發(fā)者帳號;
- 登錄進入管理控制臺,創(chuàng)建應用程序,得到 Appkey(SDK 與服務器端通過 Appkey 互相識別);
- 在推送設置中給 Android 設置包名、給 iOS 上傳證書、啟用 WinPhone,根據(jù)你的需求進行選擇;
.NET FX 4.5項目接入
該項目是基于C#/.NET(.NET Framework4.5.1的示例)極光推送對接實例,主要是對接極光集成為我們.Neter提供的SKD。在這里我主要封裝了單個設備注冊ID推送,設備注冊ID批量推送和廣播推送三種推送三種方式,其他的推送方式大家可以參考文檔去進行封裝。
JPuhs-Sample??(封裝示例源碼)
1、在項目中引入Jiguang.JPush nuget包

2、極光推送調(diào)用
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">通知內(nèi)容</param>
/// <param name="registrationid">設備注冊ID(registration_id)</param>
/// <param name="extrasParam">拓展參數(shù)(傳入App接收的一些參數(shù)標識)</param>
/// <param name="isApnsProduction">注意:iOS是否推送生產(chǎn)環(huán)境(true是,false否推開發(fā)環(huán)境)</param>
/// <returns></returns>
public bool SendPushByRegistrationId(string title, string noticeContent, string registrationid, Dictionary<string, object> extrasParam = null, bool isApnsProduction = true)
{
//設備標識參數(shù)拼接
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">通知內(nèi)容</param>
/// <param name="registrationIds">注冊ID(registration_id)列表,一次推送最多1000個</param>
/// <param name="extrasParam">拓展參數(shù)(傳入App接收的一些參數(shù)標識)</param>
/// <param name="isApnsProduction">注意:iOS是否推送生產(chǎn)環(huán)境(true是,false否推開發(fā)環(huán)境)</param>
/// <returns></returns>
public bool SendPushByRegistrationIdList(string title, string noticeContent, List<string> registrationIds, Dictionary<string, object> extrasParam = null, bool isApnsProduction = true)
{
//設備標識參數(shù)拼接
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">通知內(nèi)容</param>
/// <param name="extrasParam">拓展參數(shù)(傳入App接收的一些參數(shù)標識)</param>
/// <param name="isApnsProduction">注意:iOS是否推送生產(chǎn)環(huán)境(true是,false否推開發(fā)環(huán)境)</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">通知內(nèi)容</param>
/// <param name="pushRegistrationId">設備注冊ID(registration_id)</param>
/// <param name="isApnsProduction">iOS是否推送生產(chǎn)環(huán)境(true是,false否推開發(fā)環(huán)境)</param>
/// <param name="extrasParam">拓展參數(shù)</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:通知內(nèi)容體。是被推送到客戶端的內(nèi)容。與 message 一起二者必須有其一,可以二者并存。
Notification = new Notification
{
Alert = noticeContent,//通知內(nèi)容
Android = new Android
{
Alert = noticeContent,//通知內(nèi)容
Title = title,//通知標題
URIActivity = "com.king.sysclearning.platform.app.JPushOpenClickActivity",//該字段用于指定開發(fā)者想要打開的 activity,值為 activity 節(jié)點的 “android:name”屬性值;適配華為、小米、vivo廠商通道跳轉(zhuǎn)
URIAction = "com.king.sysclearning.platform.app.JPushOpenClickActivity",//該字段用于指定開發(fā)者想要打開的 activity,值為 "activity"-"intent-filter"-"action" 節(jié)點的 "android:name" 屬性值;適配 oppo、fcm跳轉(zhuǎn)
Extras = extrasParam //這里自定義JSON格式的Key/Value信息,以供業(yè)務使用。
},
IOS = new IOS
{
Alert = noticeContent,
Badge = "+1",//此項是指定此推送的badge自動加1
Extras = extrasParam //這里自定義JSON格式的Key/Value信息,以供業(yè)務使用。
}
},
Options = new Options//可選參數(shù)
{
//iOS 環(huán)境不一致問題:API 推送消息給 iOS,需要設置 apns_production 指定推送的環(huán)境,false 為開發(fā),true 為生產(chǎn)。
IsApnsProduction = isApnsProduction// 設置 iOS 推送生產(chǎn)環(huán)境。不設置默認為開發(fā)環(huán)境。
}
};
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對接極光消息推送的實現(xiàn)方法的文章就介紹到這了,更多相關.NET對接極光消息推送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
動態(tài)改變ASP.net頁面標題和動態(tài)指定頁面樣式表的方法
動態(tài)改變ASP.net頁面標題和動態(tài)指定頁面樣式表的方法...2007-04-04
.NET連接數(shù)據(jù)庫以及基本的增刪改查操作教程
這篇文章主要給大家介紹了關于.NET連接數(shù)據(jù)庫以及基本的增刪改查操作教程的相關資料,對于剛?cè)腴T的新手們來說是個很好的入門教程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2018-01-01
Asp.net在頁面間傳遞大量數(shù)據(jù)(數(shù)據(jù)表)建議采用的方法
能讓數(shù)據(jù)在 兩個不同站點之間傳遞嗎,針對這個問題將會展開本文的探討有想在A站點的數(shù)據(jù)傳遞到B站點的朋友們可以適當參考下,或許本文對你有所幫助2013-02-02
asp.net 2.0中利用Ajax2.0實現(xiàn)JSON傳送大量頁面數(shù)據(jù)
本人遇到一個程序頁面,要有很大量的數(shù)據(jù)進行交互操作。2010-03-03
Asp.net+jquery+.ashx文件實現(xiàn)分頁思路
分頁思路: .ashx程序中,編寫好取得不同頁碼的程序。在頁面布局好的前提下,留下數(shù)據(jù)區(qū)域 div。然后在頁面請求 .ashx程序生成下一頁的html代碼。覆蓋div.innerHTMl2013-03-03
詳解ASP.Net Core 中如何借助CSRedis實現(xiàn)一個安全高效的分布式鎖
這篇文章主要介紹了ASP.Net Core 中如何借助CSRedis實現(xiàn)一個安全高效的分布式鎖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04

