For all the divers in the house...what's better than AIR? NITROX!
A Cocoa/Objective-C wrapper for Javascript applications on the iPhone which provides access to native iPhone functions.
See http://code.google.com/p/nitrox for more information.
Nitrox is not a browser. It is intended to be used as a library and wrapper for iPhone applications written with HTML and Javascript.
The underlying mechanism is the iPhone UIKit's UIWebView. As of iPhone SDK 2.1, most of the device-specific functionality of the iPhone is not exposed to Javascript programs. The goal of Nitrox is to make that functionality available.
To create a Nitrox application, you should create a new Cocoa Touch application in Xcode just as you would for a pure Objective-C application. Then you will follow the steps described in INSTALL.md to make Nitrox available to your main application.
In addition, you will include a "web" directory with the application which contains your HTML and Javascript files.
You can extend Nitrox with your own Objective-C functions. You do not need to use Nitrox for your entire application. You can use it for only certain views or functions, and use pure Objective-C for others.
Phonegap (http://www.phonegap.com/) is the most similar. The main difference between Phonegap and Nitrox is that Nitrox uses a local XMLHTTPRequest/Ajax connection to invoke Objective-C from Javascript.
See http://code.google.com/p/nitrox/wiki/Performance for a comparison and performance analysis.
You can grab source code from Github at the following URL:
http://github.com/rsanders/nitrox/tree/master
Working:
- Ajax-based invocation of functions (slower but more reliable and optionally synchronous)
- Accelerometer
- Location functions
- Vibrate function
- System functions including exiting and openURL
- UIDevice property access
- Loading of Javascript files accessible via XMLHTTPRequest
- Simple (explicit, not automatic) proxying of GET requests for non-local URLs... could be used in some places where XMLHTTPRequest is used.
- Logging
- General Notification subscription and sending
- Callbacks to JS for accel, location, orientation, notifications
Testing:
- Faster but less general syscall method using UIWebView delegate interception rather than Ajax / HTTP
- Much faster and more general and more powerful method using WebKit native Obj-C bridge; not currently formally supported and probably App Store poison. (works, though)