Cordova 服务器到Phonegap推送:信号器与Azure通知中心
好吧,我在继续我的Phonegap应用程序开发时处于一种两难境地:对于实时事件通知,我应该使用Azure notification Hub还是Signal 据我所知,signar通过使用web套接字非常适合于实时web应用程序。而notification hub使跨多个平台发送推送通知变得非常容易。 为了便于响应,让我解释一下我目前的结构以及我的应用程序应该做什么 应用程序: 它基本上是一个应用程序,用户可以创建组并邀请其他用户。用户还可以使组“在线”,以便其他用户可以“进入”该组。当群组在线且用户已输入时,他们可以发送问题、交换消息等 需要: 当用户在组中提问或进入/离开组时,其他用户需要在应用程序屏幕中看到新用户。我可以在服务器上进行轮询以检查这一点,并根据需要更新UI,但这是现代所不允许的。我对这一主题的研究使我想到了两件事:信号器和通知中心 当前架构: 客户端->带有backbone.js的PhoneGap应用程序。 后端->带有实体框架和Azure Sql Server的Asp.NET Web API 我已经考虑过如何使用通知中心和标签。Cordova 服务器到Phonegap推送:信号器与Azure通知中心,cordova,asp.net-web-api,push-notification,signalr,real-time,Cordova,Asp.net Web Api,Push Notification,Signalr,Real Time,好吧,我在继续我的Phonegap应用程序开发时处于一种两难境地:对于实时事件通知,我应该使用Azure notification Hub还是Signal 据我所知,signar通过使用web套接字非常适合于实时web应用程序。而notification hub使跨多个平台发送推送通知变得非常容易。 为了便于响应,让我解释一下我目前的结构以及我的应用程序应该做什么 应用程序: 它基本上是一个应用程序,用户可以创建组并邀请其他用户。用户还可以使组“在线”,以便其他用户可以“进入”该组。当群组在线且
例如,当用户输入一个在线组时,它向服务器发送一个注册“grouplisten:{groupId}”标记的请求。然后,服务器向用户的设备注册该标记,并使用标记“grouplisten:{groupId}”向所有其他设备发出通知,以便其他用户使用最近加入的用户更新UI。此外,当用户离开组时,它会向服务器发送一个请求,以删除“grouplisten:{groupId}”标记,并用“grouplisten:{groupId}”通知设备。但在这个简单的例子中,看起来这可能变得难以管理 这两种技术在移动平台上各有利弊: 信号员 优点:
- 非常适合实时交付,因为时间或从服务器接收通知非常重要
- 所有主流浏览器都支持Web客户端,如IE8+、FireFox、Chrome、Safari和Android WebView、iOS Safari、IE mobile,因此它们运行良好
- 解决方案可以用JS编写,不需要知道
- 需要专用服务器,但可能使用共享主机托管,因为不需要性能
- 在Cordova中,特别需要手动连接管理以获得更好的用户体验,而不是依赖Signal提供的重新连接机制(这是iOS所必需的,iOS可能会因为电池保护而中断网络连接,在Android上,到目前为止还不是问题)
- iOS上的Safari存在一个已知的问题(需要使用长轮询配置运行),在经常出现ajax请求的真实场景中,这会迫使您为SignalR服务器使用不同的IP地址,以便在iOS上获得无缝体验
- 使用谷歌、苹果和微软的现有基础设施向用户发送通知,但它们都不保证立即发送通知。您必须分别阅读每个平台:
- 苹果公司:
- 谷歌:
- 不需要专用服务器
- 不保证立即授权
- 需要使用每个本机平台的语言。(Cordova有一个很好的插件,但它不允许在应用程序在Android上暂停时接收通知,并且在iOS上没有64位构建)