Добавьте push-уведомление iPhone, используя сервер ASP.NET - PullRequest
38 голосов
/ 29 июня 2010

Вот обзор.

Мне нужно добавить push-уведомление в приложение для iPhone. Серверная сторона - это ASP.NET в c #.

То, что я хотел бы, чтобы некоторые тренировки работали через процесс. Затем я опубликую общий код для проекта iPhone и веб-приложения ASP.NET вместе с пошаговыми инструкциями, чтобы другие могли учиться.

Вот мое понимание:

  1. Подать заявку на сертификат APNS и добавить его в связку ключей. (Не уверен, как перенести это в ASP.NET)
  2. Зарегистрируйте iPhone с помощью registerForRemoteNotificationWithTypes, отправьте значение на ваш сервер и сохраните в БД. Похоже, этот код для регистрации должно быть легко, но я не могу найти хороший пример. (Нет проблем с отправкой значения на сервер ASP.NET.)
  3. Ваше серверное приложение создает строку полезной нагрузки, выполняет кодировку JSON, отправляет на сервер APNS для каждого (или может быть для групп) iPhone с помощью токена устройства, который был сохранен в БД.

Итак, чтобы разработать дополнение, вот кусочки:

  • Регистрационный код iPhone

  • Код, который отправляет код регистрации iPhone на сервер и сохраняет в БД (это легко, и у меня уже есть эти части).

  • Код контакта APNS на стороне сервера в c #. Сюда также входит использование сертификата, созданного на веб-сайте Apple Developer.

  • Кроме того, может ли полезная нагрузка быть вопросом с множественным выбором, на который можно получить ответ, а результат отправляется обратно на сервер?

Заранее спасибо за помощь. Я превращу это в учебник для других.

Ответы [ 4 ]

18 голосов
/ 07 сентября 2011

Это заняло у меня целую вечность, чтобы понять, но я наконец соединил все это из незначительных подсказок, которые оставили люди. Вам необходимо скачать сертификат для APPID, который вы зарегистрировали на портале разработчика. Этот сертификат должен быть преобразован в формат P12 для использования в Windows. Эти команды в UNIX наконец сделали это для меня:

Шаг 1:

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

Где aps_developer_identity.cer - файл, который вы загружаете с портала

Шаг 2:

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

Где APSCertificates.p12 - это файл, который вы экспортируете из цепочки для ключей Mac. Это очень важно, вы должны импортировать сертификат из портала в связку ключей. Найдите его в разделе «Мои сертификаты», откройте раскрывающий треугольник и выделите как сертификат, так и закрытый ключ, затем щелкните правой кнопкой мыши и экспортируйте их. Дайте им пароль и сохраните их в файл p12.

Шаг 3:

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

Вам будет несколько раз предложено ввести пароль, который вы использовали для экспорта сертификата и закрытого ключа в связку ключей, и снова будет предложено ввести новые пароли для повторного шифрования всего этого, но в итоге у вас будет файл aps_developer_identity.p12, вам нужно перейти к окнам, а затем импортировать их в разделы Personal и Trusted Root менеджера сертификатов в MMC. Затем в C #, когда вы используете MoonAPNS и вызываете класс PushNotification, вы указываете ему путь к этому сертификату. Также не забудьте удалить пробелы из токена устройства.

11 голосов
/ 29 июня 2010

Таким образом, для C # push есть проект с открытым исходным кодом, который вы можете использовать, он прост и имеет некоторый пример кода использования библиотек для отправки push-уведомлений. Вот ссылка C # push-проект уведомления

По сути, все, что вам нужно сделать, это получить push-сертификат Apple, затем перетащить его в свой проект и открыть его в проекте C # (вы можете посмотреть пример, и где это сделать, будет очевидно)...

Часть iphone довольно тривиальна, и существует множество примеров

4 голосов
/ 15 мая 2013

Я буду рекомендовать онлайн-решение для push.После закрытия parse.com я использовал https://onesignal.com/ - бесплатно и легко интегрируется с API REST.

Старый ответ: Я использовал https://parse.com/products/push - бесплатно и легко интегрируется с API REST.

Старый ответ: Я бы порекомендовал PushSharp .

У меня были некоторые проблемы с Moon-APNS, и я попытался перейти на PushSharp, и он работал в течение 5 минут.PushSharp даже поддерживает push-сообщения для Android и Windows Phone в одном пакете.И он доступен в виде пакета NuGet.

1 голос
/ 19 июля 2013

К сожалению, PushSharp - это ТОЛЬКО .NET 4.0.У автора также нет планов на 3.5.Что для меня является обязательным требованием, так как сервер-провайдер разрешает только 3.5.Так что я должен был пойти с Moon-APNS, я еще не видел, как это работает.Но я только что реализовал это сегодня, и завтра мои друзья это протестируют.Moon-APNS - это также .NET 4.0, но его легко установить на 3.5.Просто скачайте библиотеки зависимостей в 3.5 и включите их и альт.

...