#azure #xamarin #push-notification #google-cloud-messaging #xamarin.android
# #azure #xamarin #push-уведомление #google-облако-обмен сообщениями #xamarin.android
Вопрос:
Я приступаю к настройке проекта Xamarin Forms для проверки концепции с целью запуска приложения Android в эмуляторе Android, регистрирующего и получающего уведомления Google Cloud, отправляемые через центр уведомлений Azure.
При исследовании этого я нашел некоторый пример кода, который предполагает серверную часть, использующую серверную часть мобильных служб Microsoft Azure. Я бы предпочел, чтобы в моем клиентском коде не было зависимости от серверной части мобильных служб, если это возможно. Однако, возможно, это неизбежно (или нецелесообразно) при использовании центров уведомлений Azure. Это действительно центральная проблема, которую я поднимаю в этом вопросе.
В приведенном ниже руководстве показан подход к регистрации и получению уведомлений с помощью приложения Xamarin forms, которое зависит от серверной части Azure Mobile Services.
Принимая во внимание, что во втором руководстве показан подход, при котором мобильное клиентское приложение (разработанное с использованием Xamarin Android) регистрируется в облаке сообщений Google, а не в центрах уведомлений Azure).
Я пытаюсь выяснить, какой правильный подход позволяет приложению Xamarin forms регистрироваться и получать уведомления, которые передаются через центр уведомлений Azure. Будет ли подход 2-го руководства (регистрация устройств для push-уведомлений напрямую в Google Cloud) работать, когда уведомления отправляются через центры уведомлений Azure (настроены с правильными учетными данными API для обмена сообщениями Google) или я что-то упускаю?
Другими словами, усложняю ли я себе жизнь, применяя 2-й подход?
Я сосредоточен на разработке с использованием форм Xamarin, но с Android в качестве ведущего типа устройства для первоначального прототипа, проверки концепции, а затем перехода на iOS и Windows Universal 10 на более позднем этапе.
Ответ №1:
Мои 2 цента.
Весь смысл использования центров уведомлений Azure заключается в том, чтобы абстрагироваться от необходимости обрабатывать системы push-уведомлений Google и iOS. Поскольку вы планируете в конечном итоге использовать как iOS, так и Android, я бы предложил зарегистрироваться через Azure.
Azure будет обрабатывать канал обратной связи iOS при регистрации устройств, что приятно, и вы можете использовать шаблоны сообщений в Azure, что означает, что вы можете отправить одно сообщение центра уведомлений, и оно будет автоматически преобразовано в сообщение, которое ожидает увидеть GCM Android, и другое сообщение, которое ожидает получить APNS iOS (они оба ожидают разные форматы уведомлений).
Поскольку, похоже, независимо от того, какой вариант вы выберете, вы планируете отправлять сообщения через Azure, вам придется иметь дело с теми же ограничениями центра уведомлений, что означает, что вы не получите много от регистрации напрямую через собственные серверные интерфейсы (ограничения по количеству тегов, которые может иметь сообщение, — этоо чем я в основном думаю).
Существует также библиотека для обеих платформ, если вы хотите зарегистрироваться непосредственно с устройства, или вы можете, как мы, вызвать мобильное устройство на один из ваших собственных внутренних серверов, который может выполнить некоторую начальную обработку перед отправкой запроса на регистрацию в azure для устройства.
* Редактировать: хотя, если вы просто хотите, чтобы что-то работало, я не вижу проблемы с регистрацией непосредственно в GCM, а затем при последующем переключении кода для выполнения этого через Azure позже.
Комментарии:
1. Это очень помогает, и на самом деле это была моя догадка (то есть, что единственным преимуществом кодирования моего мобильного клиентского приложения для регистрации в собственной инфраструктуре уведомлений (например, GCM) было бы просто быстро запустить что-то, но это потребовало бы большого количества одноразового кода, как только мы перейдем киспользование центра уведомлений Azure.)
2. Я думаю, это оставляет мне еще один вопрос, который заключается в том, чтобы разобраться в подходе, использованном в первой ссылке URL в моем первоначальном вопросе. Это использует серверную службу .NET, работающую в Azure в качестве приложения мобильной службы. Правильно ли я говорю, что мы не вынуждены развертывать наш сервер публикации внутренних уведомлений с использованием Azure Mobile services, что вместо этого мы могли бы запустить какую-либо службу .NET в Azure, которая использует API-интерфейс клиента notification hub, т. Е.
3. ^ Ссылка на API: msdn.microsoft.com/library/azure /…
4. @retail3r Правильно. Например, служба, которую мы используем для отправки push-уведомлений в azure, запускается на нашем локальном сервере, поэтому вы можете добавить
Microsoft.Azure.NotificationHubs
NuGet в любой веб-API и MVC-проект, который вы хотите, и развернуть его практически везде, где захотите. Наш сервис также обрабатывает регистрацию устройств. Это отвечает на ваш вопрос или вы имели в виду что-то другое?5. Это имеет смысл. Мне все еще немного неясно, есть ли какой-то смысл в том, что мобильное приложение регистрируется в собственной службе push-уведомлений (например, GCM), а затем, по завершении этой регистрации, регистрируется в Azure Notification Hub? Код, который меня смущает, — это шаг 11 в примере использования центров уведомлений для регистрации и получения уведомлений Android в отработанном примере в [ссылка] azure.microsoft.com/en-us/documentation/articles /…