我試圖通過C#的RestSharp API向訂閱我的頻道的所有設備發送通知提醒。這是我的代碼看起來像:爲什麼我不能使用C#中的Appcelerator REST API發送推送通知?
public void SendPush()
{
try
{
var client = new RestClient(" https://api.cloud.appcelerator.com");
var request = new RestRequest("/v1/push_notification/notify.json?key=appkey", Method.POST)
{
RequestFormat = DataFormat.Json,
};
request.AddBody(new
{
channel = "alert", payload = new { title = "notificación", badge = 1, alert = "alerta: proximo arribo de sismo a la ciudad de mexico", sound = "default" }
});
var response = client.Execute(request);
var content = response.Content;
Debug.WriteLine(content);
}
catch (Exception ex)
{
Debug.WriteLine("Message " + ex.Message + " \n Inner Exception " + ex.InnerException + " \n Stack Trace" + ex.StackTrace);
}
}
我得到的迴應是:
{
"meta": {
"status": "fail",
"code": 401,
"cc_code": 1000,
"message": "You need to sign in or sign up before continuing."
}
}
爲什麼問我登錄?所有我想做的事情是發送一個通知消息給設備。
任何幫助將不勝感激。
EDIT
我能夠登錄,所述連接信息存儲到的CookieContainer併發送通知請求,但是我無法發送有效載荷參數作爲對象。
這是我的新登錄功能的樣子:
public void Login()
{
client = new RestClient("https://api.cloud.appcelerator.com");
client.CookieContainer = new System.Net.CookieContainer();
request = new RestRequest("/v1/users/login.json?key={appkey}", Method.POST)
{
RequestFormat = DataFormat.Json
};
request.AddUrlSegment("appkey", "key");
request.AddBody(new
{
login = "user",
password = "pass"
});
var response = client.Execute(request);
var content = response.Content;
Debug.WriteLine(content);
SendPush();
}
這是我SendPush功能看起來像現在:
public void SendPush()
{
try
{
client.BaseUrl = "https://api.cloud.appcelerator.com";
request.Resource = "/v1/push_notification/notify.json?key={appkey}";
request.Method = Method.POST;
request.AddUrlSegment("appkey", "key");
request.AddParameter("channel", "alert");
request.AddParameter("payload", new
{
title = "notification",
badge = 1,
alert = "Warning",
sound = "default"
});
var response = client.Execute(request);
var content = response.Content;
Debug.WriteLine(content);
}
catch (Exception ex)
{
Debug.WriteLine("Message " + ex.Message + " \n Inner Exception " + ex.InnerException + " \n Stack Trace" + ex.StackTrace);
}
}
我試圖發送一個對象作爲參數,但它似乎不是有效的,我不知道爲什麼。如果我只是想送點東西是這樣的:
request.AddParameter("payload", "Warning");
我從Appcelerator的API的響應,但不是我想在移動應用程序的行爲,因爲負載丟失了幾個屬性。
我應該如何將該對象作爲參數與RestSharp一起發送?或者RestSharp不允許?我有什麼選擇?
我正在嘗試相同的代碼,但它不工作。即使提供了正確的用戶名和密碼後,它也會提示其中任何一個都不正確。我可以登錄儀表板並從那裏訪問應用程序。任何想法,爲什麼我得到這個錯誤? – Soumya
我有一段時間沒有與Appcelerator一起工作,但我想當你說你可以登錄到儀表板時,你是在引用Appcelerator用戶的憑據,而不是用戶集合中的用戶。不要使用您的Appcelerator憑據登錄,您需要使用您在用戶集合中創建的用戶,這些用戶是您想要登錄到您的應用的用戶。我會稍後檢查,但這應該是你的問題。 –
好的。但是在登錄儀表板後,我可以進入箭頭面板,然後我可以發送推送消息到註冊的設備。我在客戶端使用令牌方法。 – Soumya