2017-02-19 3 views
5

ли pushsharp поддерживает новый Apple approach для отправки APN с помощью Apple Push Notification Authentication Key (который никогда не истекает) вместо использования сертификатов? Можно ли использовать его с pushsharp? Если нет, есть ли другая библиотека C# для ее поддержки?Pushsharp поддержка Apple Push Notification Authentication Key

+0

Привет, могу я знать, если вы нашли ответ на этот вопрос? Благодарю. – teapeng

+2

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

ответ

0

здесь вы:

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.

Смежные вопросы