HTTP / 2 atau Bagaimana Saya Mengatasi Notifikasi PUSH di iOS

Halo semuanya. Baru-baru ini, proyek saya berhenti menerima pemberitahuan push pada perangkat iOS. Setelah proses "googling", ternyata pemberitahuan push untuk "apel" sekarang harus dikirim melalui protokol http / 2.





HEADERS
  - END_STREAM
  + END_HEADERS
  :method = POST
  :scheme = https
  :path = /3/device/00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0
  host = api.development.push.apple.com
  authorization = bearer eyAia2lkIjogIjhZTDNHM1JSWDciIH0.eyAiaXNzIjogIkM4Nk5WOUpYM0QiLCAiaWF0I
 jogIjE0NTkxNDM1ODA2NTAiIH0.MEYCIQDzqyahmH1rz1s-LFNkylXEa2lZ_aOCX4daxxTZkVEGzwIhALvkClnx5m5eAT6
 Lxw7LZtEQcH6JENhJTMArwLf3sXwi
  apns-id = eabeae54-14a8-11e5-b60b-1697f925ec7b
  apns-expiration = 0
  apns-priority = 10
  apns-topic = <MyAppTopic>
DATA
  + END_STREAM
    { "aps" : { "alert" : "Hello" } }
Listing 8-3 shows a sample request constructed for a certificate that contains multiple topics.


      
      



Berikut adalah contoh permintaan melalui protokol http / 2





. ASP.NET Framework IIS. Windows 2012R2. , HTTP/2 . - . . . "". ANDROID .





ASP.NET Core. ASP.NET Core Linux. Linux HTTP/2.





ASP.NET Core .





ASP.NET Core.





 public class dotAPNSService : IDisposable
    {
        public event EventHandler OnTokenExpiredHandler;
        private ApnsJwtOptions options = null;

        public dotAPNSService(string bundle)
        {
            options = new ApnsJwtOptions()
            {
                BundleId = bundle, //      com.org.test
                CertContent = "       ",//https://developer.apple.com/account/resources/authkeys/list
                KeyId = "  ",//https://developer.apple.com/account/resources/authkeys/list
                TeamId = "  "//https://developer.apple.com/account/resources/authkeys/list
            };
        }

        public void SendNotifications(String[] deviceTokens, String title, String body)
        {
            if (deviceTokens == null || deviceTokens.Length <= 0)
            {
                return;
            }

            if (String.IsNullOrEmpty(title))
            {
                return;
            }

            if (String.IsNullOrEmpty(body))
            {
                return;
            }

            // once you've gathered all the information needed and created an options instance, it's time to call
            var apns = ApnsClient.CreateUsingJwt(new HttpClient( ), options);

            // start the process     
            foreach (String deviceToken in deviceTokens)
            {
                var push = new ApplePush(ApplePushType.Alert)
                    .AddAlert(title, body)
                    .AddToken(deviceToken);

                Send(apns, push, deviceToken);
            }
        }
}
      
      



!!! . . .





NET.Core Docker. VPS REG.RU. VPS.





! . . . .













Visual Studio





.





Kemudian terhubung ke server kami melalui SSH. kunci akses akan dikirimkan kepada Anda melalui email.





Masukkan perintah untuk meluncurkan proyek Anda dari buruh pelabuhan





docker run -d -p 80:80/tcp /
      
      



setelah perintah ini, proyek Anda akan tersedia di http: // server ipaddress /





Selanjutnya di semua proyek, saya cukup mengirim permintaan posting ke alamat ini dengan serangkaian token penerima, header dan pesan. Semuanya berjalan dan datang dengan sangat cepat.





PS Anda dapat mengikat nama domain di pengaturan reg.ru.





Hasil

Saat ini, semua pesan push berbunyi normal. Tidak ditemukan masalah dengan bundel seperti itu. Bahkan tampaknya pemberitahuan push hilang lebih cepat daripada sebelumnya. Saya harap artikel saya akan membantu mereka yang menghadapi masalah serupa.








All Articles