web-dev-qa-db-fra.com

Ajouter une notification Push iPhone à l'aide du serveur ASP.NET

Voici l'aperçu.

Je dois ajouter une notification Push à une application iPhone. Le côté serveur est ASP.NET en c #.

Ce que j'aimerais, c'est un coaching pour travailler tout au long du processus. Je publierai ensuite du code générique pour un projet iPhone et une application Web ASP.NET ainsi que des instructions étape par étape afin que d'autres puissent apprendre.

Voici ma compréhension:

  1. Demandez le certificat APNS et ajoutez-le au trousseau. (Je ne sais pas comment apporter cela à ASP.NET)
  2. Demandez aux iPhones de s'enregistrer auprès de registerForRemoteNotificationWithTypes, d'envoyer la valeur à votre serveur et de la stocker dans une base de données. Il semble que l'enregistrement de ce code devrait être facile, mais je ne trouve pas de bon exemple. (Aucun problème avec l'envoi de la valeur au serveur ASP.NET.)
  3. Votre application serveur crée une chaîne de charge utile, effectue le codage JSON, envoie au serveur APNS pour chaque (ou peut-il s'agir de groupes) d'iPhones à l'aide de leur jeton d'appareil qui a été enregistré dans la base de données.

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

  • Le code d'enregistrement iPhone

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

  • Le code de contact APNS côté serveur en c #. Cela comprend également la façon d'utiliser le certificat généré sur le site Web du développeur Apple.

  • De plus, la charge utile peut-elle être une question à choix multiples à laquelle le résultat peut être renvoyé au serveur?

Merci d'avance pour l'aide. Je vais transformer cela en un tutoriel pour les autres.

38
RickLeinecker

Cela m'a pris une éternité à comprendre, mais j'ai finalement tout reconstitué à partir des indices mineurs que les gens ont laissés. Vous devez télécharger le certificat de 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 à partir du portail

Étape 2:

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

Où APSCertificates.p12 est un fichier que vous exportez à partir du trousseau Mac. Ceci est essentiel, vous devez importer le certificat du portail dans le trousseau. Trouvez-le dans Mes certificats, ouvrez le triangle de divulgation et mettez en surbrillance à la fois 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 pour le mot de passe que vous avez utilisé pour exporter le certificat et la clé privée dans le trousseau et à nouveau invité à saisir de nouveaux mots de passe pour tout recrypter, mais à la fin, vous aurez le fichier aps_developer_identity.p12 dont vous avez besoin déplacez vers Windows, puis importez-le dans les sections Racine personnelle et Racine de confiance 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. Assurez-vous également de supprimer les espaces du jeton d'appareil.

18
Joseph Gagliardo

Donc, pour la partie C # Push, il existe un projet open source que vous pouvez utiliser, c'est facile et a un exemple de code sur la façon d'utiliser les bibliothèques afin d'envoyer des notifications Push voici un lien projet de notification C # Push

Fondamentalement, tout ce que vous devez faire est d'obtenir le certificat Push d'Apple, puis déposez-le dans votre projet et ouvrez-le dans le projet C # (vous pouvez voir l'exemple et où le faire sera évident) ...

La partie iphone est assez triviale et il y a des tonnes d'exemples

11
Daniel

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

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

Ancienne réponse:
Je recommanderais PushSharp .

J'ai eu quelques problèmes avec Moon-APNS et j'ai essayé de passer à PushSharp et cela a fonctionné en 5 minutes. PushSharp prend même en charge Android et les messages Push de Windows Phone dans le même package. Et il est disponible en tant que package NuGet.

3
Morten Holmgaard

Malheureusement, PushSharp est .NET 4.0 UNIQUEMENT. l'auteur n'a pas non plus prévu de 3.5. Ce qui est une exigence pour moi, car le fournisseur de serveur n'autorise que 3.5. J'ai donc dû aller avec Moon-APNS, je ne l'ai pas encore vu fonctionner. Mais je viens de l'implémenter aujourd'hui, et demain mes amis vont le tester. Moon-APNS est également .NET 4.0, mais il est facile de le définir sur 3.5. Téléchargez simplement les bibliothèques de dépendances en 3.5 et incluez celles et l'alto que vous êtes prêt à utiliser.

1
Elrinth