首页 > 解决方案 > 获取苹果推送通知响应“MissingProviderToken”,即使我使用.p12 基于证书的身份验证来发送推送通知

问题描述

这是我第一次使用 Web API,我正在使用开发证书发送四个月前生成的推送通知,它也没有过期。因此,请让我知道我的代码中是否缺少任何内容。

try
{
    string certpw = "xxx";
    string devicetoken = "/3/device/2d4ee6e932a2e1216db4240fbad8c120a06211ec7d290246de221a16213d5243";
    string bundleid = "xxxxxxxxx";
     string certificatePath = "xxxx\\cert.p12";
    X509Certificate cert = X509Certificate.CreateFromCertFile(certificatePath);
    byte[] certificatesfdata = cert.GetRawCertData();
    X509Certificate2 certificate = new X509Certificate2(certificatesfdata, certpw, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

    string url = "https://api.sandbox.push.apple.com";

    string payload = @"{""aps"":{""alert"":""Test""}}";

     var handler = new WinHttpHandler(){AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, SslProtocols = SslProtocols.Tls |
       SslProtocols.Tls11 |
       SslProtocols.Tls12

    };
    handler.ClientCertificates.Add(certificate);

    if (client == null)
        client = new HttpClient(handler);

    using (var request = new HttpRequestMessage(HttpMethod.Post, url+devicetoken ))
    {
        var messageGuid = Guid.NewGuid().ToString();
        request.Version = new Version("2.0");
        request.Content = new StringContent(payload);
        request.Headers.Add("apns-id", messageGuid);
        request.Headers.Add("apns-push-type", "alert");
        request.Headers.Add("apns-priority", "10");
        request.Headers.Add("apns-topic", bundleid);
        using (var httpResponseMessage = client.SendAsync(request).GetAwaiter().GetResult())
        
        {
            var responseContent = httpResponseMessage.Content.ReadAsStringAsync().Result;
            string result = $"status: {(int)httpResponseMessage.StatusCode} content: {responseContent}";
        }
    }

}
catch (ArgumentNullException anu) { }
catch (InvalidOperationException ioe) { }
catch (HttpRequestException hre) { }
catch (TaskCanceledException tce) { }
catch (Exception e) { }

    

标签: asp.net

解决方案


推荐阅读