Поддержка Pushsharp ключа аутентификации Apple Push Notification Key

Использует ли pushsharp поддерживает новый подход Apple для отправки APN с использованием аутентификации Apple Push Notification Ключ (срок действия которого не ограничен) вместо сертификатов? Есть ли способ использовать его с pushsharp? Если нет, есть ли другая библиотека С# для ее поддержки?


person Mike Keskinov    schedule 19.02.2017    source источник
comment
Привет, могу я узнать, нашел ли ты ответ на этот вопрос? Спасибо.   -  person TPG    schedule 14.03.2017
comment
Нет. Я думаю, пока ничего не поддерживается. Пока я просто продолжаю использовать старый код и сертификаты. Надеюсь, они добавят эту возможность в будущем   -  person Mike Keskinov    schedule 15.03.2017


Ответы (1)


вот ты где:

private string GetToken()
{
    var algorithm = "ES256";
    var teamID = "teamID";
    var apnsKeyID = "apnsKeyID";
    var apnsAuthKeyPath = @"apnsAuthKeyPath";
    var epochNow = DateTimeOffset.Now.ToUnixTimeSeconds();

    var header = new Dictionary<string, object>()
    {
        { "alg", algorithm },
        { "kid" , apnsKeyID }
    };
    var payload = new Dictionary<string, object>()
    {
        { "iss", teamID },
        { "iat", epochNow }
    };

    var privateKey = GetPrivateKey(apnsAuthKeyPath);
    var token = Jose.JWT.Encode(payload, privateKey, algorithm: Jose.JwsAlgorithm.ES256, extraHeaders: header);
    return token;
}
private CngKey GetPrivateKey(string apnsAuthKey)
{
    using (var reader = File.OpenText(apnsAuthKey))
    {
        var ecPrivateKeyParameters = (ECPrivateKeyParameters)new PemReader(reader).ReadObject();
        var x = ecPrivateKeyParameters.Parameters.G.AffineXCoord.GetEncoded();
        var y = ecPrivateKeyParameters.Parameters.G.AffineYCoord.GetEncoded();
        var d = ecPrivateKeyParameters.D.ToByteArrayUnsigned();
        return EccKey.New(x, y, d);
    }
}

тогда вы можете просто вызвать метод отправки в apns.

person Mohammad    schedule 07.12.2017