Networking IPHONE APPS

The networking stack in iPhone OS includes several interfaces over the radio hardware of iPhone and iPod touch devices. The main programming interface is the CF Network framework, which builds on top of BSD sockets and opaque types in the Core Foundation framework to communicate with network entities. You can also use the NSStream classes in the Foundation framework and the low-level BSD sockets found in the Core OS layer of the system.

The following sections provide iPhone-specific tips for developers who need to incorporate networking features into their applications. For information about how to use the CF Network framework for network communication, see CF Network Programming Guide and CF Network Framework Reference. For information about using the NSStream class, see Foundation Framework Reference.

Tips for Efficient Networking

When implementing code to receive or transmit across the network, remember that doing so is one of the most power-intensive operations on a device. Minimizing the amount of time spent transmitting or receiving helps improve battery life. To that end, you should consider the following tips when writing your network-related code:

  • For protocols you control, define your data formats to be as compact as possible.
  • Avoid communicating using chatty protocols.
  • Transmit data packets in bursts whenever you can.

The cellular and Wi-Fi radios are designed to power down when there is no activity. Doing so can take several seconds though, depending on the radio. If your application transmits small bursts of data every few seconds, the radios may stay powered up and continue to consume power, even when they are not actually doing anything. Rather than transmit small amounts of data more often, it is better to transmit a larger amount of data once or at relatively large intervals.

When communicating over the network, it is also important to remember that packets can be lost at any time. When writing your networking code, you should be sure to make it as robust as possible when it comes to failure handling. It is perfectly reasonable to implement handlers that respond to changes in network conditions, but do not be surprised if those handlers are not called consistently. For example, the Bonjour networking callbacks may not always be called immediately in response to the disappearance of a network service. The Bonjour system service does immediately invoke browsing callbacks when it receives a notification that a service is going away, but network services can disappear without notification. This might occur if the device providing the network service unexpectedly loses network connectivity or the notification is lost in transit.

Using Wi-Fi

If your application accesses the network using the Wi-Fi radios, you must notify the system of that fact by including the UI Requires Persistent WiFi key in the application’s Info.plist file. The inclusion of this key lets the system know that it should display the network selection panel if it detects any active Wi-Fi hot spots. It also lets the system know that it should not attempt to shut down the Wi-Fi hardware while your application is running.

To prevent the Wi-Fi hardware from using too much power, iPhone OS has a built-in timer that turns off the hardware completely after 30 minutes if no application has requested its use through the UI Requires Persistent WiFi key. If the user launches an application that includes the key, iPhone OS effectively disables the timer for the duration of the application’s life cycle. As soon as that application quits,however, the system reenables the timer.

The Airplane Mode Alert

If the device is in airplane mode when your application launches, the system may display a panel to notify the user of that fact. The system displays this panel only when all of the following conditions are met:

  • Your application’s information property list (Info.plist) file contains the UI Requires Persistent WiFi key and the value of that key is set to true.
  • Your application launches while the device is currently in airplane mode.
  • Wi-Fi on the device has not been manually reenabled after the switch to airplane mode.

All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd Protection Status