1
我一直在從Windows Azure實施蘋果推送通知。我能夠連接到APNS服務器並使用證書進行身份驗證。當我將流寫入服務器時,我沒有得到任何異常。但由於奇怪的原因,該設備沒有收到通知。該應用程序已註冊推送通知。我不確定問題是什麼。有什麼辦法可以檢查我發送給APNS服務器的通知是否有效,或者即使APNS服務器已經發送了通知給應用程序?以下是我的代碼。Windows Azure中的APNS
我也明白,如果有一個測試,工作代碼這是一個比這
APPLEHOST = "gateway.sandbox.push.apple.com";
APPLEPORT = 2195;
private void InitializeAPN()
{
applePushNotificationClient = new TcpClient(APPLEHOST, APPLEPORT);
sslStream = new SslStream(applePushNotificationClient.GetStream(), false);
try
{
sslStream.AuthenticateAsClient(APPLEHOST, APPLE_CLIENT_CERT_COLLECTION, SslProtocols.Tls, false);
}
catch (AuthenticationException ex)
{
Trace.WriteLine("Could not open APN connection: " + ex.ToString());
}
Trace.WriteLine("APN connection opened successfully.");
}
public void SendAPNMessage(string message, string deviceID)
{
try
{
MemoryStream memoryStream = new MemoryStream();
BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
// construct the message
binaryWriter.Write((byte)0);
binaryWriter.Write((byte)0);
binaryWriter.Write((byte)32);
// convert to hex and write
byte[] deviceToken = new byte[deviceID.Length/2];
for (int i = 0; i < deviceToken.Length; i++)
{
deviceToken[i] = byte.Parse(deviceID.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
}
binaryWriter.Write(deviceToken);
// construct payload within JSON message framework
var json = new JArray(new JObject(new JProperty("aps", new JObject(new JProperty("alert", message), new JProperty("badge", 1))))).ToString();
byte[] payloadBytes = System.Text.Encoding.UTF8.GetBytes(json);
// write payload data
binaryWriter.Write((byte)0);
binaryWriter.Write((byte)payloadBytes.Length);
binaryWriter.Write(payloadBytes);
binaryWriter.Flush();
// send across the wire
byte[] array = memoryStream.ToArray();
sslStream.Write(array);
sslStream.Flush();
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
Trace.WriteLine("Message successfully sent.");
}
感謝您指導我的文章,但有沒有什麼辦法可以在C#中共享一些示例代碼?因爲我還不確定如何處理APNS服務器可能發送的錯誤響應。因爲即使我發送的二進制格式是錯誤的,它也不會發送任何錯誤響應。 – Bitsian
舊格式從不發送錯誤消息。至於C#示例代碼,請嘗試[Push Sharp](https://github.com/Redth/PushSharp)。 – Eran
推夏普似乎是一個方便的圖書館。任何想法,如果我可以使用它的商業應用程序?這是麻省理工學院的許可證嗎?它被稱爲「Apache PushSharp版權所有2012年Apache軟件基金會」,這是否意味着我不能用於商業目的? – Bitsian