Добавить iPhone push-уведомление с помощью сервера ASP.NET
Вот обзор.
Мне нужно добавить push-уведомление в приложение для iPhone. Серверная сторона - это ASP.NET в С#.
Я бы хотел, чтобы какой-то тренинг работал над этим процессом. Затем я опубликую общий код для проекта iPhone и веб-приложения ASP.NET вместе с пошаговыми инструкциями, чтобы другие могли узнать.
Вот мое понимание:
- Подать заявку на сертификат APNS и добавить его в цепочку ключей. (Не уверен, как привести это в ASP.NET)
- Зарегистрируйте iPhones с registerForRemoteNotificationWithTypes, отправьте это значение на ваш сервер и сохраните в БД. Кажется, что этот код для регистрации должен быть легким, но я не могу найти хороший образец. (Нет проблем с отправкой значения на сервер ASP.NET.)
- Ваше серверное приложение создает строку полезной нагрузки, кодирует JSON, отправляет на сервер APNS для каждого (или может быть для групп) iPhones, используя маркер своего устройства, который был сохранен в БД.
Итак, чтобы разработать дополнение, вот фрагменты:
-
Код регистрации iPhone
-
Код, который отправляет код регистрации iPhone на сервер и сохраняет DB (это легко, и у меня уже есть эти части).
-
Код доступа APNS на стороне сервера в С#. Это также включает использование сертификата, созданного на веб-сайте Apple Developer.
-
Кроме того, может ли полезная нагрузка быть вопросом с множественным выбором, на который можно ответить с результатом, отправленным обратно на сервер?
Заранее благодарим за помощь. Я включу это в учебник для других.
Ответы
Ответ 1
Это заставило меня навсегда разобраться, но я, наконец, собрал все это вместе с незнакомыми людьми. Вам необходимо загрузить сертификат для 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 Keychain. Это важно, вы должны импортировать сертификат из портала в цепочку ключей. Найдите его в разделе "Мои сертификаты", откройте треугольник раскрытия и выделите как сертификат, так и закрытый ключ, затем щелкните правой кнопкой мыши и экспортируйте их. Дайте им пароль и сохраните их в файле p12.
Шаг 3:
openssl pkcs12 -export -in aps_developer_identity.pem -out aps_developer_identity.p12 -inkey APSCertificates.pem
Вам будет предложено несколько раз ввести пароль, который вы использовали для экспорта сертификата и закрытого ключа в Keychain, и снова запросил новые пароли для повторного шифрования всего, но в конце вы получите файл aps_developer_identity.p12, который вам необходимо перейти к окнам, а затем импортировать его в секции Personal и Trusted Root менеджера сертификатов в MMC. Затем в С#, когда вы используете MoonAPNS и вызываете класс PushNotification, вы даете ему путь к этому сертификату. Также не забудьте удалить пробелы из токена устройства.
Ответ 2
Итак, для С# push part theres проект с открытым исходным кодом, который вы можете использовать, его легко и имеет некоторый пример кода, как использовать библиотеки для отправки push notificaitons здесь, это ссылка Проект уведомления о выпуске С#
В принципе, все, что вам нужно сделать, это получить сертификат push из apple, затем отбросить его в свой проект и открыть его в проекте С# (вы можете просмотреть пример и где это сделать будет очевидно)...
Часть iphone довольно тривиальная и есть множество примеров там
Ответ 3
Я порекомендую онлайн-решение. Я использовал https://parse.com/products/push - бесплатный и удобный для интеграции с REST api.
Старый ответ:
Я бы рекомендовал PushSharp.
У меня были некоторые проблемы с Moon-APNS, и я попытался перейти на PushSharp, и он работал в течение 5 минут.
PushSharp даже поддерживает push-сообщения в Android и Windows Phone в одном пакете. И он доступен как пакет NuGet.
Ответ 4
Печально PushSharp - это только .NET 4.0. у автора также нет планов на 3.5. Это требование для меня, поскольку поставщик сервера разрешает только 3.5. Поэтому мне пришлось пойти с Moon-APNS, мне еще предстоит увидеть, как он работает. Но я только что реализовал его сегодня, и завтра мои друзья проведут его. Moon-APNS также является .NET 4.0, но легко установить его на 3.5. Просто загрузите библиотеки зависимостей в 3.5 и включите те и альт, которые вам хорошо пойти.