The top level network module.
The Network
module is used to access networking related functionality.
For TCP sockets, see Titanium.Network.Socket.TCP.
The legacy Titanium.Network.TCPSocket object is still required by the BonjourBrowser and BonjourService objects.
For all other socket needs, use Titanium.Network.Socket.TCP.
Starting with iOS 9, Apple introduced new security and compatibility guidelines for networking and connectivity, which include:
Because of the new requirements, Titanium disables the App Transport Security (ATS) requirements, which only includes the TLS and certificate cipher requirements, to allow all connections.
If you wish to re-enable ATS, add the NSAppTransportSecurity
dict to the ios plist
section
of the tiapp.xml
file, then add the NSAllowArbitraryLoads
key and set it to true.
<ti:app>
...
<ios>
<plist>
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
</dict>
</plist>
</ios>
...
</ti:app>
Note that Titanium will inject code into the plist file to whitelist appcelerator.com
subdomains,
which is needed to communicate with the Appcelerator Anayltics server. To disable the whitelist,
set the ios.whitelist.appcelerator.com
tiapp application property to false.
<ti:app>
<property name="ios.whitelist.appcelerator.com" type="bool">false</property>
</ti:app>
Listed below are other guidelines from Apple.
Avoid hard-coded IPv4 address literals
Try not to include hard-coded IPv4 address literals in your application, for example, 127.0.0.1.
Whitelist URLs
If ATS is enabled and the web service you are trying to contact does not support the new security guidelines, iOS will not allow you to connect to the service. An error will be returned in the network response stating the connection failed because it did not meet the ATS policy standards.
To allow the connection, you will need to add
a NSAppTransportSecurity
dict to the ios plist
section of the tiapp.xml
file.
In the NSAppTransportSecurity
dict, you add the NSExceptionDomains
dict to whitelist
specific domains.
For more information, see iOS Developer Library: App Transport Security Technote.
Example:
<ti:app>
...
<ios>
<plist>
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
<key>NSExceptionDomains</key>
<dict>
<!-- Loosen security measure for www.foo.com domain -->
<key>www.foo.com</key>
<dict>
<!-- Set TLS v1.0 as the minimum TLS version -->
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<!-- Can use other ciphers besides forward secrecy ciphers -->
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<!-- Allow HTTP connections -->
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
</dict>
</plist>
</ios>
...
</ti:app>
Test IPV6 DNS64/NAT64
If you submit your application to the iTunes Store, you should setup an IPv6 DNS64/NAT64 network to test your application to verify it is compatible with IPv6.
If you are running OS X 10.11 or greater, you can use your computer to setup a local IPv6 Wi-Fi network, which requires an Internet connection not through Wi-Fi.
To create the network, from System Preferences, enable Internet sharing with NAT64 network enabled to share your Wi-Fi connection.
For detailed instructions, see Mac Developer Library: Test for IPv6 DNS64/NAT64 Compatibility.
Special hostname value for listening sockets, representing all locally available network interfaces.
Special hostname value for listening sockets, representing all locally available network interfaces.
This property has been removed since 7.0.0
A networkType value indicating that the device is communicating over a local-area network.
A networkType value indicating that the device is communicating over a local-area network.
This constant is also a possible value for the networkType
property of the
change event.
A networkType value indicating that the device is communicating over a mobile network.
A networkType value indicating that the device is communicating over a mobile network.
This constant is also a possible value for the networkType
property of the
change event.
A networkType value indicating that no network is available.
A networkType value indicating that no network is available.
This constant is also a possible value for the networkType
property of the
change event.
A networkType value indicating that the current network type is unknown.
A networkType value indicating that the current network type is unknown.
This constant is also a possible value for the networkType
property of the
change event.
A networkType value indicating that the device is communicating over a WiFi network.
A networkType value indicating that the device is communicating over a WiFi network.
This constant is also a possible value for the networkType
property of the
change event.
Constant value for an Alert style push notification.
Constant value for an Alert style push notification.
Constant value for a Badge style push notification.
Constant value for a Badge style push notification.
Constant value for a Newsstand style push notification. Only available on iOS5 and later
Constant value for a Sound style push notification.
Constant value for a Sound style push notification.
Constant value specifying that the progress of a download can not be calculated.
Constant value specifying that the progress of a download can not be calculated.
Constant value specifying read-only mode for sockets.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value specifying read-write mode for sockets.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value representing a socket in the CLOSED state.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value representing a socket in the CONNECTED state.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value representing a socket in the ERROR state.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value representing a socket in the INITIALIZED state.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value representing a socket in the LISTENING state.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
Constant value specifying TLS version 1.0 for SSL.
Constant value specifying TLS version 1.0 for SSL.
Constant value specifying TLS version 1.1 for SSL.
Requires: Android 4.1 and later iOS 5.0 and later
Constant value specifying TLS version 1.2 for SSL.
Requires: Android 4.1 and later iOS 5.0 and later
Constant value specifying write-only mode for sockets.
deprecated
1.7.0 Used with the deprecated <Titanium.Network.TCPSocket> only.
See <Titanium.Network.Socket> for constants used with <Titanium.Network.Socket.TCP> sockets.
A list of all cookies in the cookie storage.
A list of all cookies in the cookie storage.
The name of the API that this proxy corresponds to.
The name of the API that this proxy corresponds to.
The value of this property is the fully qualified name of the API. For example, Button
returns Ti.UI.Button
.
Indicates if the proxy will bubble an event to its parent.
Some proxies (most commonly views) have a relationship to other proxies, often established by the add() method. For example, for a button added to a window, a click event on the button would bubble up to the window. Other common parents are table sections to their rows, table views to their sections, and scrollable views to their views. Set this property to false to disable the bubbling to the proxy's parent.
Default: true
The Window or TabGroup whose Activity lifecycle should be triggered on the proxy.
The Window or TabGroup whose Activity lifecycle should be triggered on the proxy.
If this property is set to a Window or TabGroup, then the corresponding Activity lifecycle event callbacks will also be called on the proxy. Proxies that require the activity lifecycle will need this property set to the appropriate containing Window or TabGroup.
Network type value as a constant.
Network type value as a constant.
One of the NETWORK
constants defined in Titanium.Network.
This API can be assigned the following constants:
Network type as a String. Returns one of NONE
, WIFI
, LAN
, MOBILE
, or UNKNOWN
.
Boolean value indicating if the device can reach the Internet.
Boolean value indicating if the device can reach the Internet.
The online
property is true
if the device can currently reach the Internet
using either WiFi, mobile network or LAN.
Remote device UUID if the device is registered with the Apple Push Notification Service, or null if it is not registered.
Array of push notification type constants enabled for the application.
Array of push notification type constants enabled for the application.
Indicates whether push notifications have been enabled using registerForPushNotifications.
Indicates whether push notifications have been enabled using registerForPushNotifications.
Legacy method to add a connectivity listener to listen for network changes.
This method has been removed since 3.0.0
Use the <Titanium.Network.change> event to monitor connectivity changes.
Callback function to invoke upon network connectivity changes.
Adds the specified callback as an event listener for the named event.
Name of the event.
Callback function to invoke when the event is fired.
Adds a cookie to the HTTP client cookie store.
On iOS, the cookie will override an existing cookie with the same name, domain and path, if any. The cookie's
expiryDate
property must be a date later than the creating date, otherwise the cookie will not persist in the
cookie storage.
On Android, any existing cookie with the same domain and name will be replaced with the new cookie. This is a bug
in BasicCookieStore
because based on RFC6265
, an existing cookie can be evicted and replaced only when it has the same cookie-name,
domain-value and path-value with the new cookie.
The cookie to add
Adds a cookie to the system cookie store.
On Android, Titanium.UI.WebView uses the system cookie store. Any existing cookie with the same domain, path and name will be replaced with the new cookie.
The cookie to add
Applies the properties to the proxy.
Properties are supplied as a dictionary. Each key-value pair in the object is applied to the proxy such that myproxy[key] = value.
A dictionary of properties to apply.
Creates and returns a BonjourBrowser
object.
Service to search for, must include the protocol type suffix (._tcp).
Bonjour service domain to conduct the search in.
A dictionary object of properties defined in Titanium.Network.BonjourBrowser.
Creates and returns a BonjourService
object.
Name of the service. Must be a unique identifier for this service type and domain.
Type of service. Must include the protocol identifier (._tcp).
Domain to publish the service in.
Dictionary object of properties defined in Titanium.Network.BonjourService.
Creates and returns an instance of Titanium.Network.Cookie.
Properties to set on a new object, including any defined by Titanium.Network.Cookie except those marked not-creation or read-only.
Creates and returns an instance of Titanium.Network.HTTPClient.
Properties to set on a new object, including any defined by Titanium.Network.HTTPClient except those marked not-creation or read-only.
Legacy method to create and return an instance of Titanium.Network.TCPSocket.
deprecated since 1.7.0
Use <Titanium.Network.Socket.createTCP> instead.
Note that TCPSocket
is still used with the Bonjour services. For other uses,
see Titanium.Network.Socket.TCP.
Host name to connect to/listen on.
Port for the socket.
Socket's mode; one of READ_MODE, WRITE_MODE, READ_WRITE_MODE.
Dictionary object with properties defined in Titanium.Network.TCPSocket.
Returns a decoded version of a URI encoded value.
URI encoded input value to be decoded.
Returns a URI encoded version of the specified URI component.
On iOS, this also escapes the following characters, which are allowed in a URL but may not be allowed or desirable inside a path component:
!*'();:@+$,/?%#[]=&
Input value to be encoded.
Fires a synthesized event to any registered listeners.
Name of the event.
A dictionary of keys and values to add to the Titanium.Event object sent to the listeners.
Gets all the cookies with the domain, path and name matched with the given values from the HTTP client cookie store.
The domain matching and path matching follow RFC6265
. If name is null, return all the cookies with the domain and
path matched.
The domain of the cookie to get. It is case-insensitive.
The path of the cookie to get. It is case-sensitive.
The name of the cookie to get. It is case-sensitive.
Gets all the cookies with the domain matched with the given values from the HTTP client cookie store.
The domain matching follows RFC6265
.
The domain of the cookie to get. It is case-insensitive.
Gets all the cookies with the domain, path and name matched with the given values from the system cookie store.
On Android, Titanium.UI.WebView uses the system cookie store. The domain matching and path matching follow RFC6265
.
If name is null, return all the cookies with the domain and path matched. The returned cookies only have their
name and value properties returned.
The domain of the cookie to get. It is case-insensitive.
The path of the cookie to get. It is case-sensitive.
The name of the cookie to get. It is case-sensitive.
Registers for push notifications with the Apple Push Notification Service.
Call this method at application startup.
For iOS 8 and later, before calling this method, the application needs to call the Titanium.App.iOS.registerUserNotificationSettings method and pass it the notification types to use. Setting the notification types with this method will have no effect on iOS 8 and later.
For iOS 7 and earlier, set the notification types to use with this method.
Dictionary specifying push-notification related options.
Removes all the cookies from the HTTP client cookie store.
Removes all the cookie from the system client cookie store.
On Android, Titanium.UI.WebView uses the system cookie store.
Legacy method to remove a connectivity listener.
This method has been removed since 3.0.0
Use the <Titanium.Network.change> event to monitor connectivity changes.
Callback function to remove.
Removes the specified callback as an event listener for the named event.
Multiple listeners can be registered for the same event, so the
callback
parameter is used to determine which listener to remove.
When adding a listener, you must save a reference to the callback function in order to remove the listener later:
var listener = function() { Ti.API.info("Event listener called."); }
window.addEventListener('click', listener);
To remove the listener, pass in a reference to the callback function:
window.removeEventListener('click', listener);
Name of the event.
Callback function to remove. Must be the same function passed to addEventListener
.
Removes the cookie with the domain, path and name exactly the same as the given values from the HTTP client cookie store.
The domain of the cookie to remove. It is case-insensitive.
The path of the cookie to remove. It is case-sensitive.
The name of the cookie to remove. It is case-sensitive.
Removes the cookies with the domain matched with the given values from the HTTP client cookie store.
The domain matching follows RFC6265
.
The domain of the cookie to remove. It is case-insensitive.
Removes the cookie with the domain, path and name exactly the same as the given values from the system cookie store.
On Android, Titanium.UI.WebView uses the system cookie store.
The domain of the cookie to remove. It is case-insensitive.
The path of the cookie to remove. It is case-sensitive.
The name of the cookie to remove. It is case-sensitive.
Sets the value of the bubbleParent property.
New value for the property.
Sets the value of the lifecycleContainer property.
New value for the property.
Unregisters the application for push notifications.
Per Apple's documentation, it is rarely necessary to call this method. See: unregisterForRemoteNotifications in the UIApplication Class Reference
For example, calling this method would be required if a new version of your application no longer supports push notifications.
Fired when network connectivity changes.
New network type as a string.
Boolean to indicate if the device is online.
New network type
This API can be assigned the following constants:
Human-readable text describing the reason for the change.
Source object that fired the event.
Name of the event fired.
True if the event will try to bubble up if possible.
Set to true to stop the event from bubbling.