2010-06-29 11 views
38

Ecco la panoramica.Aggiungi notifica push iPhone utilizzando il server ASP.NET

Devo aggiungere una notifica push a un'app per iPhone. Il lato server è ASP.NET in C#.

Quello che vorrei è un po 'di coaching per lavorare attraverso il processo. Pubblicherò quindi un codice generico per un progetto iPhone e un'app Web ASP.NET insieme a istruzioni dettagliate in modo che altri possano apprendere.

Qui è la mia comprensione:

  1. domanda per il certificato APNS e aggiungerlo al portachiavi. (Non sei sicuro di come portarlo in ASP.NET)
  2. Gli iPhone si registrano con registerForRemoteNotificationWithTypes, inviano il valore al tuo server e lo memorizzano in un DB. Sembra che questo codice per la registrazione dovrebbe essere facile ma non riesco a trovare un buon campione. (Nessun problema con l'invio del valore al server ASP.NET)
  3. L'app del server crea una stringa di payload, esegue la codifica JSON, invia al server APNS per ciascuno (o può essere per gruppi) di iPhone utilizzando il proprio dispositivo token che è stato salvato nel DB.

Così per sviluppare l'aggiunta, qui ci sono i pezzi:

  • Il codice di registrazione iPhone

  • codice che invia il codice di registrazione iPhone al server e consente di risparmiare a DB (questo è facile e Ho già questi pezzi).

  • Il codice di contatto APNS lato server in C#. Questo include anche come utilizzare il certificato che è stato generato sul sito Web di Apple Developer.

  • Inoltre, il carico utile può essere una domanda a risposta multipla a cui è possibile rispondere con il risultato inviato al server?

Grazie in anticipo per l'aiuto. Lo trasformerò in un tutorial per gli altri.

+2

Ciao @RickLeinecker, sei mai riuscito a creare codice generico per un progetto iPhone e un'app Web ASP.NET insieme alle istruzioni dettagliate? Sarebbe bello se tu lo potessi fornire per gli altri. Il progetto – Brabbeldas

risposta

10

Così, per la parte C# spinta theres un progetto open source che si può usare, è facile e ha qualche codice di esempio di come utilizzare le librerie al fine di inviare notificaitons spinta Ecco un link C# push notification project

Fondamentalmente tutto devi fare è prendere il certificato push da apple, quindi rilasciarlo nel progetto e aprirlo nel progetto C# (puoi vedere l'esempio e dove farlo sarà ovvio) ...

La parte iphone di piuttosto banale e ci sono un sacco di esempi là fuori

+0

è ora obsoleto. qualche altro suggerimento? – capdragon

+0

Lo stesso autore sta lavorando su PushSharp - https://github.com/Redth/PushSharp/ –

18

Questo mi ha portato per sempre a figu Riemergo ma alla fine ho ricostruito tutto insieme dagli indizi minori lasciati dalla gente. È necessario scaricare il certificato per l'APPID che si registra sul portale degli sviluppatori. Tale certificato deve essere convertito in un formato P12 da utilizzare su Windows. Questi comandi in UNIX finalmente ha fatto per me:

Fase 1:

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

Dove aps_developer_identity.cer è il file che si scarica dal portale

Fase 2:

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

Dove APSCertificates.p12 è un file si esporta dal Mac portachiavi. Questo è fondamentale, è necessario importare il certificato dal portale nel portachiavi. Trovalo in I miei certificati, apri il triangolo di divulgazione e evidenzia sia il certificato che la chiave privata, quindi fai clic con il pulsante destro del mouse ed esportali. Dare loro una password e salvarli in un file p12.

Fase 3:

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

Verrà richiesto un paio di volte per la password utilizzata per esportare il certificato e la chiave privata nel portachiavi e chiesto nuovamente per nuove password per crittografare nuovamente tutto, ma in Alla fine si avrà il file aps_developer_identity.p12 che è necessario passare a Windows, quindi importarlo nelle sezioni Personal e Trusted Root del gestore certificati in MMC. Quindi in C# quando usi MoonAPNS e chiami la classe PushNotification gli dai un percorso per quel certificato. Assicurati inoltre di rimuovere gli spazi dal token del dispositivo.

+0

Bit alla fine della giornata, lo so, ma grazie per questo. Mi ha aiutato oltre la linea ... – Robert

3

Raccomanderò una soluzione push online. Ho usato https://parse.com/products/push - gratuito e facile da integrare con una API REST.

Vecchia risposta:
mi sento di raccomandare PushSharp.

Ho avuto alcuni problemi con Moon-APNS e ho provato a passare a PushSharp e ha funzionato entro 5 minuti. PushSharp supporta anche i messaggi push di Android e Windows Phone nello stesso pacchetto. Ed è disponibile come pacchetto NuGet.

+0

PushSharp è estremamente facile da lavorare e ha un tutorial passo-passo per saltare attraverso tutti i cerchi di iOs. – raider33

+1

E arriva anche con tonnellate di problemi strani! :) – Mrchief

+0

sì, PushSharp è sospeso tutto il tempo – Toolkit

1

Purtroppo PushSharp è .NET 4.0 SOLO. anche l'autore non ha piani per 3.5. Quale è un requisito per me, poiché il provider di server consente solo 3.5. Quindi dovevo andare con Moon-APNS, devo ancora vederlo funzionare. Ma l'ho appena implementato oggi e domani i miei amici lo testeranno. Moon-APNS è anche .NET 4.0, ma è facile impostarlo su 3.5. Basta scaricare le librerie di dipendenze in 3.5 e includere quelle e viola che sei a posto.