AFNetworking 和推送通知
AFNetworking and Push Notifications
我正在开发一个向服务器发送 GET
和 POST
信息的应用程序。我正在使用 AFNetworking
框架这样做。我的目标是在有人向服务器发布新信息时向客户端推送通知。例如:发布了新成绩,成绩已发布的学生必须在他的 iDevice 上收到通知。
虽然我不熟悉 Apple Push Notification 的工作原理,但根据我的阅读,我得出结论,我需要添加服务器端代码才能触发通知。
请注意,我无权访问服务器。服务由 Fedena 提供。
从哪里开始有任何建议或提示吗?
APNS 需要一个服务器才能工作。通常的流程是这样的:
- iOS 应用程序要求用户启用推送通知
- 授予访问权限后,将生成一个设备令牌,然后必须将其发送到服务器。
- 您的服务器必须使用从 Apple Developer 站点生成的正确 APNS 证书进行设置
- 然后在您的服务器中,当创建新的 post 时,您需要添加一些逻辑来加载您已经收到的所有 APNS 令牌,然后将通知发送到设备。
这是一个非常简单的流程描述,但我想您明白您需要访问服务器才能完成您想要实现的目标。
存在一些第三方来处理推送通知(如 Urban Airship),但这些推送通知通常是人工推送的,而不是由服务器事件触发的
我建议您可以使用自己的辅助服务器作为中间服务器,并将其用作基础设施 bone.You 可以使用 SignalR 库。使用辅助服务器在两个设备之间创建连接。一个客户端将推送事件,另一个客户端将监听事件。
这是 link 到 IOS.
中编写的 signalR 库代码
我目前正在使用这些库。您可以做的是使用这些库启动集线器和连接。
该库允许在服务器上调用方法。像这样。
[_hub invoke:@"MehtodName" withArgs:params];
我要做的是在服务器上创建事件注册表。因此,一个客户端可以在服务器上监听事件,而其他客户端可以推送事件,反之亦然。
因此,您的学生设备可以调用方法 "subscribe to events",服务器会将其添加到注册表列表中。您可以创建辅助服务 "Publish Events"。成绩发布者可以调用该方法进行发布。此处发布事件将查找注册表并找到感兴趣的客户端并在客户端上调用所需的方法。
通过此site阅读更多关于 signalr 的信息。
在 APNS 上使用 Signalr 的好处。
- Cost Effective. As this will save you money which you might have to pay to Apple for pushing notification.
- Can Easily make it cross plateform in future. Just have to impletement similar library in Android/Windows.
- Quicker as the data does not travel to apple server from your server.
- Worst case you can fallback to apns any day, just put push notification code in any of your secondary server methods.
我也进行了电池和性能测试,并且运行良好。
如果你想知道,这里是它如何处理非常可靠的连接。
SRAutoTransport chooses the best supported transport for both client
and server. This achieved by falling back to less performant
transports. The default transport fallback is:
- SRWebSocketTransport
- SRServerSentEventsTransport
- SRLongPollingTransport
如果您有任何其他问题,请告诉我。我目前正在做类似的工作,也许可以帮助您解决问题。
我正在开发一个向服务器发送 GET
和 POST
信息的应用程序。我正在使用 AFNetworking
框架这样做。我的目标是在有人向服务器发布新信息时向客户端推送通知。例如:发布了新成绩,成绩已发布的学生必须在他的 iDevice 上收到通知。
虽然我不熟悉 Apple Push Notification 的工作原理,但根据我的阅读,我得出结论,我需要添加服务器端代码才能触发通知。
请注意,我无权访问服务器。服务由 Fedena 提供。
从哪里开始有任何建议或提示吗?
APNS 需要一个服务器才能工作。通常的流程是这样的:
- iOS 应用程序要求用户启用推送通知
- 授予访问权限后,将生成一个设备令牌,然后必须将其发送到服务器。
- 您的服务器必须使用从 Apple Developer 站点生成的正确 APNS 证书进行设置
- 然后在您的服务器中,当创建新的 post 时,您需要添加一些逻辑来加载您已经收到的所有 APNS 令牌,然后将通知发送到设备。
这是一个非常简单的流程描述,但我想您明白您需要访问服务器才能完成您想要实现的目标。
存在一些第三方来处理推送通知(如 Urban Airship),但这些推送通知通常是人工推送的,而不是由服务器事件触发的
我建议您可以使用自己的辅助服务器作为中间服务器,并将其用作基础设施 bone.You 可以使用 SignalR 库。使用辅助服务器在两个设备之间创建连接。一个客户端将推送事件,另一个客户端将监听事件。 这是 link 到 IOS.
中编写的 signalR 库代码我目前正在使用这些库。您可以做的是使用这些库启动集线器和连接。 该库允许在服务器上调用方法。像这样。
[_hub invoke:@"MehtodName" withArgs:params];
我要做的是在服务器上创建事件注册表。因此,一个客户端可以在服务器上监听事件,而其他客户端可以推送事件,反之亦然。 因此,您的学生设备可以调用方法 "subscribe to events",服务器会将其添加到注册表列表中。您可以创建辅助服务 "Publish Events"。成绩发布者可以调用该方法进行发布。此处发布事件将查找注册表并找到感兴趣的客户端并在客户端上调用所需的方法。
通过此site阅读更多关于 signalr 的信息。
在 APNS 上使用 Signalr 的好处。
- Cost Effective. As this will save you money which you might have to pay to Apple for pushing notification.
- Can Easily make it cross plateform in future. Just have to impletement similar library in Android/Windows.
- Quicker as the data does not travel to apple server from your server.
- Worst case you can fallback to apns any day, just put push notification code in any of your secondary server methods.
我也进行了电池和性能测试,并且运行良好。
如果你想知道,这里是它如何处理非常可靠的连接。
SRAutoTransport chooses the best supported transport for both client and server. This achieved by falling back to less performant transports. The default transport fallback is:
- SRWebSocketTransport
- SRServerSentEventsTransport
- SRLongPollingTransport
如果您有任何其他问题,请告诉我。我目前正在做类似的工作,也许可以帮助您解决问题。