Prueba de carga de la aplicación del servidor de notificaciones push de Apple.

Desarrollé una aplicación de servidor que puede enviar mensajes push a los servidores de Apple. Lo probé con un par de dispositivos y puedo recibir los mensajes en el dispositivo. El problema es que no tengo forma de saber cómo funcionará mi aplicación cuando tengo alrededor de un millón de dispositivos en mi base de datos. ¿Hay alguna manera de cargar la aplicación de servidor en este escenario?

preguntado el 09 de marzo de 12 a las 15:03

2 Respuestas

¿No podrías usar datos de prueba? Podría llenar su base de datos con un script de prueba. ¿Como ID de dispositivos aleatorios...? El APS de Apple, por supuesto, no aceptará los mensajes, pero podrías probar tus capacidades, ¿no?

respondido 09 mar '12, 15:03

Puedo hacer eso, pero sería como enviar 1 millón de mensajes a dispositivos de identificación no válidos para Apple. ¿Existe alguna posibilidad de que el servidor de Apple lo trate de alguna manera como una especie de ataque (intentar cargar el servidor generará una solicitud no válida) y bloqueará nuestra aplicación por completo? - prashant

También puede usar todos los dispositivos que pueda obtener e insertar sus ID en la base de datos varias veces. Recibirás un concierto de notificaciones push :) - alex

En un escenario ideal, esperaría tener un servidor ficticio ejecutándose en el mismo puerto que Apple, que simplemente consume todo lo que se le arroja. De esa manera puedo probar mi aplicación sin molestar a Apple. Por supuesto, estoy haciendo algunas suposiciones pequeñas aquí, pero creo que esto es lo más cerca que llego al entorno de producción. - prashant

Veo lo que quieres y, más bien, enfrenté el mismo problema, lo que funcionó para mí fue la ingeniería inversa. Simplemente miré en la biblioteca y verifiqué la función que valida el deviceToken. Entonces, mientras creaba el token de dispositivo ficticio, solo me aseguré de que el token generado sea válido según la biblioteca.

El siguiente código te permitirá generar IMPORTANTE Tokens de dispositivo, ahora depende de usted cuántos millones de tokens generar con esta función.

   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() 
     }

El deviceToken de Apple tiene 64 caracteres, por lo que deberá repetirlo 64 veces.

Respondido 05 Jul 13, 10:07

Estos tokens son rechazados por Apple APN con 400 {'reason': 'BadDeviceToken'}, ¿no? - dima tisnek

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.