提示1003 引數不合法
uj5u.com熱心網友回復:
那就改成合法的
uj5u.com熱心網友回復:
怎么修改呢 我看了半天沒有看出來那邊是不合法的
uj5u.com熱心網友回復:
關鍵就是看不出來那邊不合法
uj5u.com熱心網友回復:
https://www.nuget.org/packages/JPush.NET/
直接用這個dll就行了,官方的哪種不好用,大致就下面這種寫法
PushMessageRequestV3 request = new PushMessageRequestV3()
{
Platform = platform,
AppMessage = message,
Audience = audience,
Notification = notification
};
Client.SendPushMessage(request)
uj5u.com熱心網友回復:
官方不是提供c#的類別庫嗎?為什么還要自己寫...
uj5u.com熱心網友回復:
有沒有具體點的案例呢
uj5u.com熱心網友回復:
官方給出的 是已經封裝好的
uj5u.com熱心網友回復:
有具體的實體嗎
uj5u.com熱心網友回復:
public static class JPushHelper
{
private class JPushQueue
{
public PushMessageRequestV3 Request { get; set; }
public LogWriter Log { get; set; }
}
private static readonly ConcurrentQueue<JPushQueue> Queue = new ConcurrentQueue<JPushQueue>();
private static readonly JPushClientV3 Client;
static JPushHelper()
{
bool testEnv;
bool.TryParse(ConfigurationManager.AppSettings["JPushTestEnvironment"], out testEnv);
Client = new JPushClientV3(ConfigurationManager.AppSettings[$"JPushAppKey"],
ConfigurationManager.AppSettings[$"JPushSecretKey"], testEnv);
Task.Run(() => { Execute(); });
}
private static void Execute()
{
while (true)
{
JPushQueue request;
if (Queue.TryPeek(out request)
&& Execute(request))
{
while (!Queue.TryDequeue(out request))
{
//do nothing
}
continue;
}
}
}
private static bool Execute(JPushQueue request)
{
try
{
var response = Client.SendPushMessage(request.Request);
if (request.Log != null)
{
request.Log.Info(GetLogInfos(request.Request, response));
}
return response.ResponseCode == PushResponseCode.Succeed;
}
catch(Exception ex)
{
if (request.Log != null)
{
string responseContent = string.Empty;
HttpOperationException webEx = ex as HttpOperationException;
if (webEx == null)
{
webEx = ex.InnerException as HttpOperationException;
}
if (webEx != null)
{
responseContent = webEx.ExceptionReference.ResponseText;
}
request.Log.Error($@"Exception:{ex}
ResponseContent:{responseContent}
推送資料:{JsonConvert.SerializeObject(request.Request)}");
}
return true;
}
}
private static string GetLogInfos(PushMessageRequestV3 request, PushResponse response)
{
StringBuilder tmp = new StringBuilder();
tmp.AppendLine("*********** Request ***********");
tmp.AppendLine(JsonConvert.SerializeObject(request));
tmp.AppendLine("*********** Response ***********");
tmp.AppendLine(JsonConvert.SerializeObject(response));
return tmp.ToString();
}
public static void Push(PushPlatform platform, Audience audience, Notification notification, AppMessage message, LogWriter log = null)
{
PushMessageRequestV3 request = new PushMessageRequestV3()
{
Platform = platform,
AppMessage = message,
Audience = audience,
Notification = notification
};
Queue.Enqueue(new JPushQueue
{
Request = request,
Log = log
});
}
}
就這么簡單啊,沒啥實體了,這個是已經在線上運行了的
uj5u.com熱心網友回復:
應該還有一些類別庫什么的吧 我這邊好多都得定義
uj5u.com熱心網友回復:
類別庫就是上面4L那個鏈接啊,你通過nuget安裝就行了
然后這個代碼是簡單的一個記憶體佇列,只發一次,不管發不發成功
uj5u.com熱心網友回復:
有誰寫過呼叫極光的介面 的呢??、
uj5u.com熱心網友回復:
用官方的內褲不是好了,真不知道你作什么
uj5u.com熱心網友回復:
/// <summary>
/// JPushV3
/// </summary>
/// <param name="RegistrationID"></param>
/// <param name="type"></param>
/// <param name="content"></param>
/// <param name="isType"></param>
/// <returns></returns>
public string JPush(string RegistrationID, string type, string content,int isType)//0默認全體 1個人
{
string app_key = string.Empty;
string masterSecret = string.Empty;
app_key = "";
masterSecret = "";
string postData = string.Empty;
if (isType == 1)
{
postData = "{\"platform\":\"all\",\"audience\":{\"alias\":[" + RegistrationID + "]},\"message\":{\"msg_content\":\"" + content + "\",\"extras\":{\"pushType\":\"" + type + "\"}},\"options\":{\"apns_production\":true},\"notification\":{ \"android\":{\"alert\":\"" + content + "\"},\"ios\":{\"alert\":\"" + content + "\",\"sound\":\"default\",\"badge\":\"+1\"}}}";
}
else
{
postData = "{\"platform\":\"all\",\"audience\":\"all\",\"message\":{\"msg_content\":\"" + content + "\",\"extras\":{\"pushType\":\"" + type + "\"}},\"options\":{\"apns_production\":true},\"notification\":{ \"android\":{\"alert\":\"" + content + "\"},\"ios\":{\"alert\":\"" + content + "\",\"sound\":\"default\",\"badge\":\"+1\"}}}";
}
byte[] data = UTF8Encoding.UTF8.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://api.jpush.cn/v3/push");
myRequest.Method = "POST";//極光http請求方式為post
myRequest.ContentType = "application/json";//按照極光的要求
byte[] base64 = System.Text.Encoding.Default.GetBytes(app_key + ":" + masterSecret);
myRequest.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(base64));
myRequest.ContentLength = data.Length;
//System.GC.Collect();
//myRequest.KeepAlive = false;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
// Get response
var response = (HttpWebResponse)myRequest.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
{
string result = reader.ReadToEnd();
reader.Close();
response.Close();
//myRequest.Abort();
return result;
}
}
uj5u.com熱心網友回復:
樓主實作沒?
uj5u.com熱心網友回復:
你好,請問,c#的winform怎么接收極光推送服務器發來的訊息?
-----------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/109131.html
標籤:ASP.NET
上一篇:母版頁中使用loginview,頁面中的控制元件就null了,求指點
下一篇:向大佬求助求助,把以下隨機生成的東西分類