C# PushSharp: неверный размер токена

Когда я пытаюсь отправить уведомление со своего сервера, я получаю это сообщение: "Invalid token size"

Из этой ветки PushSharp не отправляет уведомления я узнал, что это может быть потому, что я Я пытаюсь использовать сертификат Sandbox для рабочего сервера или наоборот, но я так не думаю, поскольку у меня нет настройки производственного сертификата.

введите здесь описание изображения

Затем я экспортировал сертификат разработки APN (.p12) и использовал его на сервере (как того требует PushSharp).

Я снова экспортировал файл .p12, чтобы убедиться, что сертификат является настоящим, но безуспешно.

Я также использую флаг «Песочница».

Вот код С#, который я использую:

static class APN
{
    static PushBroker push = new PushBroker();
    static byte[] appleCert = File.ReadAllBytes(@"C:\Certs\PineAppPushDev.p12");

    static public void StartAPN()
    {
        Console.WriteLine("Starting APN ...");            
        /* Event listeners */
        push.OnChannelException += broker_OnChannelException;
        push.OnNotificationFailed += broker_OnNotificationFailed;

        push.RegisterAppleService(new ApplePushChannelSettings(false, appleCert, "*****"));

    }

    static private void broker_OnChannelException(object sender, PushSharp.Core.IPushChannel pushChannel, System.Exception error)
    {
        Console.WriteLine("broker_OnChannelException:");
        Console.WriteLine("PushChannel: " + pushChannel.ToString());
        Console.WriteLine("Error: " + error.ToString());
    }

    static private void broker_OnNotificationFailed(object sender, PushSharp.Core.INotification notification, System.Exception error)
    {
        Console.WriteLine("broker_OnNotificationFailed:");
        Console.WriteLine("Notification: " + notification.ToString());
        Console.WriteLine("Error: " + error.ToString());
    }

    static public void SendAPN(string message, string deviceID)
    {
        Console.WriteLine("SendAPN");
        Console.WriteLine("DeviceID: " + deviceID.ToString());
        try
        {
            push.QueueNotification(new AppleNotification()
                .ForDeviceToken(deviceID)
                .WithAlert(message));
        }
        catch (Exception ex)
        {
            Console.WriteLine("ERROR: APN.SendAPN(): " + ex.ToString());
        }
    }
}

Не уверен, что мне не хватает, любая помощь очень ценится!


person Westerlund.io    schedule 25.06.2014    source источник
comment
В какой момент вы получаете ошибку? Проблема появляется сразу в SendAPN() или позже, когда вызывается один из ваших обратных вызовов? Вы проверили наличие ненужных символов в deviceID?   -  person peter_the_oak    schedule 25.06.2014
comment
Это мой DeviceID: 7ff779e7246e1ea75fb37bcd95d1eb0b длиной 32 символа, что кажется правильным. Вызывается SendAPN, а затем обратный вызов.   -  person Westerlund.io    schedule 25.06.2014
comment
Я добавил оператор печати до и после push.QueueNotification, и оба распечатываются, а после этого сообщение обратного вызова.   -  person Westerlund.io    schedule 25.06.2014
comment
Проблема была в том, что я взял неверный DeviceID из Corona SDK! Я получил его из system.getInfo(deviceID), хотя должен был получить его из event.token в прослушивателе уведомлений. Идентификатор представляет собой 64-байтовое шестнадцатеричное число.   -  person Westerlund.io    schedule 25.06.2014
comment
Спасибо за разъяснения :-) Я уверен, что однажды это поможет!   -  person peter_the_oak    schedule 25.06.2014