iOS app with real-time updates from server: Socket (using streams) or Apple Push Notification service?
I’m trying to make an iOS 5 app that features real-time things coming from the server. It will only use these whilst the app is running.
To make it real-time without polling I have been evaluating two design routes:
Creating a socket from the app to the server, and exchanging information via streams.
- Pros: Relatively simple and would not involve a 3rd party.
- Cons: Battery life drain.
- For an overview of how this might work, check
out this excellent tutorial:
Using standard HTTP to communicate with the server, and with each request from the app let the server know what they are viewing. If something new is available for user, send an Apple Push Notification (with no visible alert) to let app know it can go and download new thing.
- Pros: Not opening up a new TCP connection, so battery life not drained unnecessarily.
- Cons: Feels like a poor hack.
- The official docs on APNs http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html
I think a socket would be the way to go, but before I commit to it I wanted a second opinion, as this is the first time I’ve made anything like this!
2 Solutions Collect From Internet About “iOS app with real-time updates from server: Socket (using streams) or Apple Push Notification service?”
Does it really need to be “full real time”? From my point of view i would prefer http since it is already well integrated into the iOS SDK. Its easy to understand, maintain and implement and plenty of documentation is on the web. So maybe a http poll every minute or so will be enough (depending on the app and the number of users). Please consider firewalls too! Traffic to unknown ports maybe denied due to firewall policies of provider or local wifi. So if you really need realtime connectivity I guess you have to use sockets.
Sockets would be my choice. I do not know how time critical your application is, but sockets might perform better as APNs if realtime is a must.
- is it possible to use iframe in UIWebView?
- How to record a video with avfoundation in Swift?
- Swift 3: Safe way to decode values with NSCoder?
- Implementing Google custom search API in iOS
- UITableViewCell reorganize subviews when the 'delete' button appears
- Why use id when we can just use NSObject?
- Clang Error in XCode
- Reading the iPhone's Ambient Light sensor
- iPhone:How to crop image in ios5
- Which iPhone SDK to download?
- Unexpected Non-Void Return Value In Void Function (Swift 2.0)
- viewWillLayoutSubviews in Swift
- Firebase observe with type .childAdded retrieves all my information every time. Please assist
- Expression is not assignable, coordinate attribute from MKAnnotation class delegate
- Implicitly Unwrapped Optionals in UIViewController init method