38 votes

Ajouter une notification push iPhone en utilisant le serveur ASP.NET

Voici l'aperçu.

J'ai besoin d'ajouter une notification push à une application iPhone. Le côté serveur est ASP.NET en c#.

Ce que j'aimerais, c'est un peu de coaching pour travailler sur le processus. Je publierai ensuite le code générique d'un projet iPhone et d'une application Web ASP.NET, accompagné d'instructions étape par étape, afin que d'autres puissent apprendre.

Voici ce que je comprends :

  1. Demandez un certificat APNS et ajoutez-le au trousseau de clés. (Je ne suis pas sûr de la façon de transposer cela à ASP.NET)
  2. Demandez aux iPhones de s'enregistrer avec registerForRemoteNotificationWithTypes, d'envoyer la valeur à votre serveur et de la stocker dans une base de données. Il semble que ce code d'enregistrement devrait être facile mais je n'arrive pas à trouver un bon exemple. (Pas de problème avec l'envoi de la valeur au serveur ASP.NET).
  3. Votre application serveur crée une chaîne de données utiles, effectue un encodage JSON, envoie au serveur APNS pour chaque iPhone (ou peut être pour des groupes) en utilisant leur jeton d'appareil qui a été enregistré dans la base de données.

Donc pour développer l'addition, voici les pièces :

  • Le code d'enregistrement de l'iPhone

  • Code qui envoie le code d'enregistrement de l'iPhone au serveur et le sauvegarde dans la base de données (c'est facile et j'ai déjà ces éléments).

  • Le code de contact APNS côté serveur en c#. Cela inclut également comment utiliser le certificat qui a été généré sur le site web Apple Developer.

  • En outre, la charge utile peut-elle être une question à choix multiple à laquelle on peut répondre et dont le résultat est renvoyé au serveur ?

Merci d'avance pour votre aide. Je vais en faire un tutoriel pour les autres.

2 votes

Bonjour @RickLeinecker, avez-vous déjà pu créer un code générique pour un projet iPhone et une application web ASP.NET avec des instructions étape par étape ? Ce serait formidable si vous pouviez fournir cela aux autres.

18voto

Joseph Gagliardo Points 141

Cela m'a pris une éternité à comprendre, mais j'ai fini par tout reconstituer à partir des petits indices que les gens ont laissés. Vous devez télécharger le certificat pour l'APPID que vous enregistrez sur le portail des développeurs. Ce certificat doit être converti au format P12 pour être utilisé sous Windows. Ces commandes sous UNIX l'ont finalement fait pour moi :

Étape 1 :

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

Où aps_developer_identity.cer est le fichier que vous téléchargez depuis le portail.

Étape 2 :

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

Où APSCertificates.p12 est un fichier que vous exportez du trousseau de clés Mac. C'est essentiel, vous devez importer le certificat du portail dans le trousseau de clés. Trouvez-le dans Mes certificats, ouvrez le triangle de divulgation et mettez en évidence le certificat et la clé privée, puis faites un clic droit et exportez-les. Donnez-leur un mot de passe et enregistrez-les dans un fichier p12.

Étape 3 :

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

Vous serez invité à plusieurs reprises à saisir le mot de passe que vous avez utilisé pour exporter le certificat et la clé privée dans Keychain, puis à saisir de nouveaux mots de passe pour tout re-crypter, mais à la fin vous aurez le fichier aps_developer_identity.p12 que vous devrez déplacer vers Windows, puis importer dans les sections Personal et Trusted Root du gestionnaire de certificats dans MMC. Ensuite, en C#, lorsque vous utilisez MoonAPNS et appelez la classe PushNotification, vous lui donnez un chemin vers ce certificat. Veillez également à supprimer les espaces du jeton de périphérique.

11voto

Daniel Points 16707

Pour la partie push en C#, il y a un projet open source que vous pouvez utiliser, c'est facile et il y a des exemples de code sur la façon d'utiliser les bibliothèques pour envoyer des notifications push, voici un lien. Projet de notification push en C#

En gros, tout ce que vous avez à faire est d'obtenir le certificat push d'apple, puis de le déposer dans votre projet et de l'ouvrir dans le projet C# (vous pouvez voir l'exemple et l'endroit où le faire sera évident)...

La partie iphone est assez triviale et il existe des tonnes d'exemples.

0 votes

Maintenant déprécié. D'autres suggestions ?

0 votes

Le même auteur travaille maintenant sur PushSharp -. github.com/Redth/PushSharp

3voto

Morten Holmgaard Points 713

Je vais recommander une solution de poussée en ligne. Après la fermeture de parse.com, j'ai utilisé https://onesignal.com/ - gratuit et facile à intégrer avec une api REST.

Vieille réponse :
J'ai utilisé https://parse.com/products/push - gratuit et facile à intégrer avec une api REST.

Vieille réponse :
Je recommande PushSharp .

J'ai eu quelques problèmes avec Moon-APNS et j'ai essayé de passer à PushSharp et ça a marché en 5 minutes. PushSharp prend même en charge les messages push Android et Windows Phone dans le même paquet. Et il est disponible sous forme de package NuGet.

0 votes

PushSharp est extrêmement facile à mettre en œuvre et dispose d'un tutoriel étape par étape permettant de franchir toutes les étapes de l'utilisation d'iOs.

1 votes

Et vient avec une tonne de problèmes bizarres aussi ! :)

0 votes

Yep, PushSharp est suspendu tout le temps

1voto

Elrinth Points 11

Malheureusement, PushSharp n'est compatible qu'avec .NET 4.0. L'auteur ne prévoit pas non plus de version 3.5. Ce qui est une exigence pour moi, car le fournisseur du serveur n'autorise que la version 3.5. J'ai donc dû opter pour Moon-APNS, que je n'ai pas encore vu fonctionner. Mais je viens de l'implémenter aujourd'hui, et demain mes amis le testeront. Moon-APNS est .NET 4.0 également, mais il est facile de le configurer en 3.5. Il suffit de télécharger les librairies de dépendance en 3.5 et de les inclure, et voilà, vous êtes prêt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X