Apple Push Notification: mesajlarının yüksek hacimli gönderme

2 Cevap php

I am using PHP to connect to apns to send some notifications to multiple devices, although the question is more conceptual so it doesn't have to be specific to PHP. I will be sending to about 7000 devices (and growing) all at the same time. My process runs ONCE per day and broadcasts to all devices, so I am not constantly re-opening a connection.

Currently I can easily send to 2 devices at a time and the messages will successfully deliver. However when I attempt to send to the full 7000 devices, the messages do not seem to deliver.

Kodumu psuedo mantık:

open connection to apple
loop over devicetokens
    write to socket connection per device
end loop
close connection to apple.

Ben sadece bir TEK yazma gerçekleştirmek ve bir büyük beden inşa gerektiğini yerde gördük, diğer bir deyişle psuedo kod gibi görünecektir:

loop over device tokens
    create payload aggregating all devices
end loop
open connection to apple
write to socket ONCE with whole payload for 7000 devices
close connection

It's difficult to test as I obviously can't spam my 7000 production users with test messages. Has anybody else had a similar problem?

Teşekkürler

2 Cevap

Ben elma kendi sunucularına connections yaptığınız sayısı umurumda olmadığını okudum ama herhangi bir yazma sınırları hakkında duymadım. Ayrıca, ben burada alacağınız yanıt ne tür hakkında emin değilim, ama ne olacağını görmek için bir cami olabilir. Belki sadece üretim cihazların cihaz belirteçleri kullanarak, sanal itme bildirim sunucusu ile deneme. Bu telefonlar sanal sunucuya gönderilen herhangi bir push bildirimleri almak olmamalı ve sandbox raporları "başarıyla teslim" ise, bu test etmek için sorunsuz bir yol olurdu.

I see what you want and rather, i did face the same problem, what worked for me was the reverse engineering. I just looked into the library and checked for the function which validates the deviceToken. So while creation of dummy device token i just made sure that the generated token is valid as per the library.

Aşağıdaki kod şimdi onun size bu fonksiyonu kullanarak oluşturmak için kaç milyon belirteçleri için, valid cihaz Belirteçleri'ni oluşturmak izin verir.

   def generateRandomDeviceTokenAndAppendItToJson(tokenLength: Int) {
     val randomlyGeneratedDeviceToken = new StringBuilder()
      randomlyGeneratedDeviceToken.append("          \"")
        (1 to tokenLength) foreach {
         times: Int =>
        if (tokenLength equals Device.Apple)
         randomlyGeneratedDeviceToken.append(validCharacter().toString.charAt(0))
        else
         randomlyGeneratedDeviceToken.append(Random.alphanumeric.head)
        }
       randomlyGeneratedDeviceToken.append("\",")
       println(randomlyGeneratedDeviceToken)
       writer.write(randomlyGeneratedDeviceToken.toString())
      }

      private def validCharacter(): Int = {
       val a = Random.alphanumeric.head
       if ('0' <= a && a <= '9')
        return (a - '0')
       else if ('a' <= a && a <= 'f')
        return ((a - 'a') + 10)
       else if ('A' <= a && a <= 'F')
        return ((a - 'A') + 10)
       validCharacter() 
     }

64 kez üzerinde yinelemek gerekiyor bu yüzden elma deviceToken 64 karakter olduğunu.