notification hub c# iphone push-notification apple-push-notifications

c# - hub - Agregar notificación de inserción de iPhone utilizando el servidor ASP.NET



xamarin ios push notification azure (4)

Aquí está la descripción general.

Necesito agregar notificaciones automáticas a una aplicación de iPhone. El lado del servidor es ASP.NET en c #.

Lo que me gustaría es un poco de coaching para trabajar en el proceso. Luego publicaré un código genérico para un proyecto de iPhone y una aplicación web ASP.NET junto con instrucciones paso a paso para que otros puedan aprender.

Aquí está mi entendimiento:

  1. Solicite el certificado APNS y agréguelo al llavero. (No estoy seguro de cómo llevar esto a ASP.NET)
  2. Haga que los iPhones se registren con registerForRemoteNotificationWithTypes, envíe el valor a su servidor y almacénelo en un DB. Parece que este código para registrar debería ser fácil, pero no puedo encontrar una buena muestra. (No hay problema con enviar el valor al servidor ASP.NET).
  3. Su aplicación de servidor crea una cadena de carga, la codificación JSON, envía al servidor APNS para cada uno (o puede ser para grupos) de iPhones utilizando su token de dispositivo que se guardó en la base de datos.

Entonces, para desarrollar la adición, aquí están las piezas:

  • El código de registro de iPhone

  • Código que envía el código de registro de iPhone al servidor y lo guarda en DB (esto es fácil y ya tengo estas piezas).

  • El código de contacto APNS del lado del servidor en c #. Esto también incluye cómo usar el certificado que se generó en el sitio web de desarrolladores de Apple.

  • Además, ¿la carga útil puede ser una pregunta de opción múltiple que se puede responder con el resultado enviado de vuelta al servidor?

Gracias de antemano por la ayuda. Convertiré esto en un tutorial para otros.


Entonces, para la parte de inserción de C # hay un proyecto de código abierto que puede usar, es fácil y tiene un código de ejemplo de cómo usar las bibliotecas para enviar notificaciones push aquí, hay un proyecto de notificación de inserción de C #.

Básicamente, todo lo que tienes que hacer es obtener el certificado push de apple, luego colocarlo en tu proyecto y abrirlo en el proyecto C # (puedes ver el ejemplo y dónde hacerlo será obvio) ...

La parte del iphone es bastante trivial y hay toneladas de ejemplos por ahí


Esto me tomó una eternidad para descifrarlo, pero finalmente lo armé todo a partir de las pistas menores que dejaba la gente. Debe descargar el certificado para la APPID que registra en el portal del desarrollador. Ese certificado se debe convertir a un formato P12 para ser utilizado en Windows. Estos comandos en UNIX finalmente lo hicieron por mí:

Paso 1:

openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM}

Donde aps_developer_identity.cer es el archivo que descarga desde el portal

Paso 2:

openssl pkcs12 -nocerts -out APSCertificates.pem -in APSCertificates.p12

Donde APSCertificates.p12 es un archivo que exporta desde Mac Keychain. Esto es crítico, debe importar el certificado del portal a llavero. Encuéntrelo en Mis certificados, abra el triángulo de revelación y resalte tanto el certificado como la clave privada, luego haga clic con el botón derecho y expórtelos. Déles una contraseña y guárdelos en un archivo p12.

Paso 3:

openssl pkcs12 -export -in aps_developer_identity.pem -out aps_developer_identity.p12 -inkey APSCertificates.pem

Se le preguntará un par de veces la contraseña que utilizó para exportar el certificado y la clave privada en Keychain y se le solicitarán nuevas contraseñas para volver a encriptarlo, pero al final tendrá el archivo aps_developer_identity.p12 que necesita para vaya a Windows, luego impórtelo en las secciones Root personal y de confianza del administrador de certificados en MMC. Luego, en C # cuando usas MoonAPNS y llamas a la clase PushNotification, le das una ruta a ese certificado. También asegúrese de eliminar espacios del token del dispositivo.


Recomendaré una solución de inserción en línea. Después de cerrar parse.com, he usado https://onesignal.com/ - gratis y fácil de integrar con una API REST.

Respuesta anterior:
He usado https://parse.com/products/push - gratis y fácil de integrar con una API REST.

Respuesta anterior:
Yo recomendaría PushSharp .

Tuve algunos problemas con Moon-APNS y traté de cambiar a PushSharp y funcionó en 5 minutos. PushSharp incluso admite mensajes push de Android y Windows Phone en el mismo paquete. Y está disponible como un paquete NuGet.


Tristemente PushSharp es .NET 4.0 SOLAMENTE. el autor tampoco tiene planes para 3.5. Lo cual es un requisito para mí, ya que el proveedor del servidor solo permite 3.5. Así que tuve que ir con Moon-APNS, aún no lo he visto funcionar. Pero lo acabo de implementar hoy, y mañana mis amigos lo probarán. Moon-APNS también es .NET 4.0, pero es fácil configurarlo en 3.5. Solo descargue las librerías de dependencia en 3.5 e incluya esas y viola, está listo para comenzar.