我正在着手建立一个 Xamarin Forms 项目来进行概念验证,目的是让 Android 应用程序在 Android 模拟器中运行,注册并接收通过 Azure 通知中心发送的 Google 云通知。
在研究这个问题时,我发现了一些示例代码,它假设后端使用 Microsoft Azure 的移动服务后端。 如果可能的话,我不希望我的客户端代码依赖于移动服务后端。但是,在使用 Azure 通知中心时,这可能是不可避免的(或不可取的)。这确实是我提出这个问题的核心问题。
下面链接的教程展示了使用 Xamarin 表单应用程序注册和接收通知的方法,该应用程序依赖于 Azure 移动服务后端。
而第二个教程展示了一种方法,其中移动客户端应用程序(使用 Xamarin Android 开发)注册到 Google 消息云而不是 Azure 通知中心。
我遇到困难的地方是试图找出哪种方法可以使 Xamarin 表单应用程序注册并接收通过 Azure 通知中心推送的通知。 当通过 Azure 通知中心(配置了正确的 Google 消息传递 API 凭据)发送通知时,第二个教程的方法(设备直接向 Google 云注册推送通知)是否有效,还是我遗漏了某些内容?
换句话说,我采用第二种方法是否会让自己的生活变得困难?
我的重点是使用 Xamarin 表单进行开发,但以 Android 作为初始原型(prototype)、概念验证的主要设备类型,然后在稍后阶段转向 iOS 和 Windows Universal 10。
最佳答案
我的 2 美分。
使用 Azure 通知中心的全部意义在于抽象出处理 Google 和 iOS 推送通知系统的需求。由于您计划最终同时使用 iOS 和 Android,我建议您通过 Azure 进行注册。
Azure 将在注册设备时处理 iOS 反馈 channel ,这很好,您可以在 Azure 中使用消息模板,这意味着您可以发送单个通知中心消息,它将自动转换为 Android 的 GCM 期望的消息请参阅 iOS 的 APNS 期望收到的另一条消息(它们都期望不同的通知消息格式)。
由于听起来无论您选择哪个选项,您都计划通过 Azure 发送消息,因此您将必须处理相同的通知中心限制,这意味着直接通过 native 服务器注册不会获得太多好处接口(interface)(一条消息可以拥有的标签数量的限制是我主要考虑的)。
如果您想直接从设备注册,还有一个适用于这两个平台的库,或者您可以像我们一样,让移动设备调用您自己的后端服务器之一,该服务器可以在发送注册请求之前进行一些初始处理到设备的 azure 。
*编辑:虽然如果您只是想让某些功能正常工作,但我认为直接注册到 GCM 然后再切换代码通过 Azure 来完成此操作没有问题。
关于azure - 通过 Azure 通知中心使用 Xamarin Forms 在 Android 模拟器上推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40020385/