SlideShare a Scribd company logo
Introduction to




         ejlp12@gmail.com
Apache Cordova



Apache Cordova is a platform for building natively installed
mobile applications using HTML, CSS and JavaScript
History


Apache Cordova was originally called Phonegap build by Nitobi
Open-source & free software from the beginning (MIT License), Apache
License now
Nitobi then aquired by Adobe and donated the PhoneGap codebase to the
Apache Software Foundation (ASF)
PhoneGap is still a product of Adobe. It is a distribution of Apache Cordova.
Think of Apache Cordova as the engine that powers PhoneGap.
Cordova Architecture
Apache Cordova Application’s User Interface


 The user interface for Apache Cordova applications
 is created using HTML, CSS, and JavaScript.
 The UI layer is a web browser view that takes up
 100% of the device width and 100% of the device
 height.
 The web view used by application is the same web
 view used by the native operating system
    iOS: Objective-C UIWebView class
    Android: android.webkit.WebView
    WP7: WebBrowser
    WP8: WebBrowser control (Internet Explorer 10)
    BlackBerry: WebWorks framework
Apache Cordova API



Provides an application programming interface (API)
  enables you to access native operating system functionality using
  JavaScript.
  APIs for Accelerometer, Camera, Compass, Media, FileSystem, etc
  Extendable using native plug-in
docs.phonegap.com




                                   Cordova JavaScript API
             Cordova Application            and             Native API
                                   Cordova Native Library
Supported Platforms


Accelerometer
        Monitor the motion sensor on the device.
Camera
        Take pictures with the device camera
        allow the user to select images from their photo
        library on the device.
Capture
        Capture video and still images from the camera, and
        audio from the microphone.
Compass
        Give users of your app some direction.
Contacts
        Search and Create contacts in the user’s address
        book.
File
        Low level read and write access to the file system.
        Upload and download files from a web server.
GeoLocation
        Make your app location aware.
Media
        Play and record audio files.
Network
        Monitor the device connections
Notification
        Access to vibration, beep and alerts.
Storage                                                       Updated list:
        Persistent data store in WebStorage.
                                                              http://wiki.apache.org/cordova/PlatformSupport
Development using Cordova


Tools for development
  Any HTML & JS editor
  Platform SDK e.g. Android SDT, Android SDK, BB SDK, Xcode, Visual
  Studio Mobile.
  Platform Emulator (usually provide along with SDK)
  JS/HTML GUI Mobile framework e.g. JQuery, Sencha Touch, dojo Mobile
  Browser e.g. Firefox with Bugzilla extension, Chrome Browser
Getting Started


Guides:
•   Getting Started with Android
•   Getting Started with Blackberry
•   Getting Started with iOS
•   Getting Started with Symbian
•   Getting Started with WebOS
•   Getting Started with Windows Phone
•   Getting Started with Windows 8
•   Getting Started with Bada
•   Getting Started with Tizen

             http://docs.phonegap.com/en/2.2.0/guide_getting-started_index.md.html

Use platform SDK to develop application for each target platform


                                                                                               …
    Xcode             Android SDK           BB Java Eclipse Plug-in   Visual Studio, Windows
                      Eclipse ADT Plug-in   Ripple                    Phone Dev Tools
Code Example
<!DOCTYPE html>
<html>
  <head>
    <title>Device Properties Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for Cordova to load
    document.addEventListener("deviceready", onDeviceReady, false);

   // Cordova is ready
   function onDeviceReady() {
       navigator.geolocation.getCurrentPosition(onSuccess, onError);
   }

   // onSuccess Geolocation
   function onSuccess(position) {
       var element = document.getElementById('geolocation');
       element.innerHTML = 'Latitude: '           + position.coords.latitude          +   '<br   />'   +
                           'Longitude: '          + position.coords.longitude         +   '<br   />'   +
                           'Altitude: '           + position.coords.altitude          +   '<br   />'   +
                           'Accuracy: '           + position.coords.accuracy          +   '<br   />'   +
                           'Altitude Accuracy: ' + position.coords.altitudeAccuracy   +   '<br   />'   +
   }

    // onError Callback receives a PositionError object
    function onError(error) {
        alert('code: ' + error.code + 'n' + message: ' + error.message + 'n');
    }
    </script>
  </head>
  <body>
    <p id="geolocation">Finding geolocation...</p>
  </body>
</html>
Apache Cordova Native Plug-in


What if a native feature isn’t available in Core APIs?

PhoneGap is extensible with a “native plugin” model that enables you
to write your own native logic to access via JavaScript.

  You develop your JavaScript class to
  mirror the API of the native class
  Invoke the native function using
  PhoneGap.exec()
  Plug-in class mappings:
      Android: res/xml/plugins.xml
      iOS: www/Cordova.plist
      BlackBerry: www/plugins.xml


PhoneGap.exec(function(winParam){}, function(error){}, ”service”, ”action", [params]);
Plugin Example (Android Native Code)

package sample.cordova.plugin;

import   org.apache.cordova.api.CordovaPlugin;
import   org.apache.cordova.api.PluginResult;
import   org.json.JSONArray;
import   org.json.JSONException;
import   org.json.JSONObject;

/**
 * This class echoes a string called from JavaScript.
                                                        Extend the Cordova                   Implement execute
 */
                                                            Plugin class                          method
public class Echo extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
    throws JSONException {
                                                                Define and handle
        if (action.equals("echo")) {                                   action
            String message = args.getString(0);
            if (message != null && message.length() > 0) {
                callbackContext.success(message);
            } else {
                callbackContext.error("Expected one non-empty string argument.");
            }
            return true;
        }
        return false;
    }

}
Plugin Example (HTML + JS Code)

<!DOCTYPE html>
<html>
  <head>
    <title>Cordova Plugin Test</title>
    <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    var EchoPlugin = {
         callNativeFunction: function (success, fail, resultType) {
             return Cordova.exec( success, fail, “sample.cordova.plugin.Echo", "echo", [resultType]);
         }
    };

    function callNativePlugin( returnSuccess ) {
         HelloPlugin.callNativeFunction( nativePluginResultHandler, nativePluginErrorHandler, returnSuccess );
    }
    function nativePluginResultHandler (result) {
         alert("SUCCESS: rn"+result );
    }
    function nativePluginErrorHandler (error) {
         alert("ERROR: rn"+error );
    }
    </script>
  </head>
  <body>
<body onload="onBodyLoad()">
<h1>Cordova Plugin Test</h1>
<button onclick="callNativePlugin('success');">Click to invoke the Native Plugin!</button>
</body>
Resources


Apache Cordova Website
http://cordova.apache.org/
Apache Cordova Documentation
http://docs.phonegap.com/en/2.2.0/index.html

PhoneGap Day 2011 – IBM, PhoneGap and the Enterprise by Bryce Curtis [Aug 10, 2011]
http://www.slideshare.net/drbac/phonegap-day-ibm-phonegap-and-the-enterprise (video)
Andrew Trice’s Blog
http://www.tricedesigns.com/category/cordova/

More Related Content

What's hot (20)

PPT
Web Service Presentation
guest0df6b0
 
PDF
Intro to react native
ModusJesus
 
PPTX
Android summer training report
Shashendra Singh
 
PDF
Progressive Web Apps
Software Infrastructure
 
PDF
Google Firebase presentation - English
Alexandros Tsichouridis
 
PPTX
Introduction to React
Rob Quick
 
PPTX
What is new in Firebase?
Sinan Yılmaz
 
PDF
Progressive web apps
Akshay Sharma
 
DOCX
Servlet
Dhara Joshi
 
PPTX
Remote method invocatiom
sakthibalabalamuruga
 
PPTX
Full stack development
Arnav Gupta
 
PPTX
Pwa demystified
edynamic
 
PPT
Jsp ppt
Vikas Jagtap
 
PDF
Intro To React Native
FITC
 
PDF
Hibernate Presentation
guest11106b
 
PPT
Ionic Framework
Thinh VoXuan
 
PPTX
Firebase Overview
aashutosh kumar
 
PDF
What is front-end development ?
Mahmoud Shaker
 
PPTX
Getting Started with React.js
Smile Gupta
 
PPTX
Why Progressive Web App is what you need for your Business
Lets Grow Business
 
Web Service Presentation
guest0df6b0
 
Intro to react native
ModusJesus
 
Android summer training report
Shashendra Singh
 
Progressive Web Apps
Software Infrastructure
 
Google Firebase presentation - English
Alexandros Tsichouridis
 
Introduction to React
Rob Quick
 
What is new in Firebase?
Sinan Yılmaz
 
Progressive web apps
Akshay Sharma
 
Servlet
Dhara Joshi
 
Remote method invocatiom
sakthibalabalamuruga
 
Full stack development
Arnav Gupta
 
Pwa demystified
edynamic
 
Jsp ppt
Vikas Jagtap
 
Intro To React Native
FITC
 
Hibernate Presentation
guest11106b
 
Ionic Framework
Thinh VoXuan
 
Firebase Overview
aashutosh kumar
 
What is front-end development ?
Mahmoud Shaker
 
Getting Started with React.js
Smile Gupta
 
Why Progressive Web App is what you need for your Business
Lets Grow Business
 

Viewers also liked (20)

PDF
Apps with Apache Cordova and Phonegap
Christian Grobmeier
 
KEY
Phonegap/Cordova vs Native Application
Muhammad Hakim A
 
PDF
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Gabriel Huecas
 
PDF
Cordova and PhoneGap Insights
Monaca
 
PDF
Cordova: APIs and instruments
Ivano Malavolta
 
PPTX
All About Phonegap
Sushan Sharma
 
PPTX
Introduction to jQuery Mobile
ejlp12
 
PPTX
Hybrid App Development with PhoneGap
Dotitude
 
PPTX
Phone gap
Madhura Keskar
 
PDF
[2015/2016] Apache Cordova
Ivano Malavolta
 
PPTX
JBoss Data Virtualization (JDV) Sample Physical Deployment Architecture
ejlp12
 
PDF
Linux container & docker
ejlp12
 
PPTX
Agile & SCRUM
ejlp12
 
PPTX
IBM WebSphere Application Server (Clustering) Concept
ejlp12
 
PDF
RESTful web service with JBoss Fuse
ejlp12
 
PPTX
PMP Training - 12 project procurement management
ejlp12
 
PPTX
PMP Training - 08 project quality management
ejlp12
 
PPTX
PMP Training - 04 project integration management
ejlp12
 
PPTX
PMP Training - 06 project time management2
ejlp12
 
PPTX
PMP Training - 10 project communication management
ejlp12
 
Apps with Apache Cordova and Phonegap
Christian Grobmeier
 
Phonegap/Cordova vs Native Application
Muhammad Hakim A
 
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Gabriel Huecas
 
Cordova and PhoneGap Insights
Monaca
 
Cordova: APIs and instruments
Ivano Malavolta
 
All About Phonegap
Sushan Sharma
 
Introduction to jQuery Mobile
ejlp12
 
Hybrid App Development with PhoneGap
Dotitude
 
Phone gap
Madhura Keskar
 
[2015/2016] Apache Cordova
Ivano Malavolta
 
JBoss Data Virtualization (JDV) Sample Physical Deployment Architecture
ejlp12
 
Linux container & docker
ejlp12
 
Agile & SCRUM
ejlp12
 
IBM WebSphere Application Server (Clustering) Concept
ejlp12
 
RESTful web service with JBoss Fuse
ejlp12
 
PMP Training - 12 project procurement management
ejlp12
 
PMP Training - 08 project quality management
ejlp12
 
PMP Training - 04 project integration management
ejlp12
 
PMP Training - 06 project time management2
ejlp12
 
PMP Training - 10 project communication management
ejlp12
 
Ad

Similar to Introduction to Apache Cordova (Phonegap) (20)

PPT
Apache Cordova phonegap plugins for mobile app development
webprogr.com
 
PDF
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
PPTX
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
PPTX
phonegap with angular js for freshers
dssprakash
 
ODP
Apache Cordova, Hybrid Application Development
thedumbterminal
 
PPTX
Apache Cordova In Action
Hazem Saleh
 
PDF
Introduction to PhoneGap and PhoneGap Build
Martin de Keijzer
 
PDF
PhoneGap in 60 Minutes or Less
Troy Miles
 
PPTX
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
PDF
Apache Cordova 4.x
Ivano Malavolta
 
PPTX
Mobile Development with PhoneGap
Daniel Ramos
 
PPTX
PhoneGap - Now and the Future
Tim Kim
 
PDF
Intro to PhoneGap
Jussi Pohjolainen
 
PDF
Creating and Distributing Mobile Web Applications with PhoneGap
James Pearce
 
PDF
Cordova 101
Rob Dudley
 
KEY
Intro to PhoneGap
Ryan Stewart
 
PDF
Apache cordova
Carlo Bernaschina
 
PDF
Introduction to PhoneGap
degarden
 
PDF
Cross-platform mobile apps with Apache Cordova
Ivano Malavolta
 
PDF
Combining the Security Risks of Native and Web Development: Hybrid Apps
Achim D. Brucker
 
Apache Cordova phonegap plugins for mobile app development
webprogr.com
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
phonegap with angular js for freshers
dssprakash
 
Apache Cordova, Hybrid Application Development
thedumbterminal
 
Apache Cordova In Action
Hazem Saleh
 
Introduction to PhoneGap and PhoneGap Build
Martin de Keijzer
 
PhoneGap in 60 Minutes or Less
Troy Miles
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Apache Cordova 4.x
Ivano Malavolta
 
Mobile Development with PhoneGap
Daniel Ramos
 
PhoneGap - Now and the Future
Tim Kim
 
Intro to PhoneGap
Jussi Pohjolainen
 
Creating and Distributing Mobile Web Applications with PhoneGap
James Pearce
 
Cordova 101
Rob Dudley
 
Intro to PhoneGap
Ryan Stewart
 
Apache cordova
Carlo Bernaschina
 
Introduction to PhoneGap
degarden
 
Cross-platform mobile apps with Apache Cordova
Ivano Malavolta
 
Combining the Security Risks of Native and Web Development: Hybrid Apps
Achim D. Brucker
 
Ad

More from ejlp12 (19)

PDF
Introduction to Docker storage, volume and image
ejlp12
 
PDF
Java troubleshooting thread dump
ejlp12
 
PPTX
WebSphere Application Server Information Resources
ejlp12
 
PPTX
WebSphere Application Server Family (Editions Comparison)
ejlp12
 
PPTX
BPEL, BPEL vs ESB (Integration)
ejlp12
 
PPTX
BPMN Introduction
ejlp12
 
PPTX
WebSphere Application Server Topology Options
ejlp12
 
PPTX
IBM WebSphere Application Server version to version comparison
ejlp12
 
PPT
IBM WebSphere MQ Introduction
ejlp12
 
PPT
Java EE Introduction
ejlp12
 
PPTX
Introduction to JPA (JPA version 2.0)
ejlp12
 
PPTX
Introduction to JavaBeans Activation Framework v1.1
ejlp12
 
PPT
Arah pengembangan core network architecture (Indonesia)
ejlp12
 
PPTX
GSM/UMTS network architecture tutorial (Indonesia)
ejlp12
 
PPTX
PMP Training - 11 project risk management
ejlp12
 
PPTX
PMP Training - 09 project human resource management
ejlp12
 
PPTX
PMP Training - 07 project cost management
ejlp12
 
PPTX
PMP Training - 05 project scope management
ejlp12
 
PPTX
PMP Training - 01 introduction to framework
ejlp12
 
Introduction to Docker storage, volume and image
ejlp12
 
Java troubleshooting thread dump
ejlp12
 
WebSphere Application Server Information Resources
ejlp12
 
WebSphere Application Server Family (Editions Comparison)
ejlp12
 
BPEL, BPEL vs ESB (Integration)
ejlp12
 
BPMN Introduction
ejlp12
 
WebSphere Application Server Topology Options
ejlp12
 
IBM WebSphere Application Server version to version comparison
ejlp12
 
IBM WebSphere MQ Introduction
ejlp12
 
Java EE Introduction
ejlp12
 
Introduction to JPA (JPA version 2.0)
ejlp12
 
Introduction to JavaBeans Activation Framework v1.1
ejlp12
 
Arah pengembangan core network architecture (Indonesia)
ejlp12
 
GSM/UMTS network architecture tutorial (Indonesia)
ejlp12
 
PMP Training - 11 project risk management
ejlp12
 
PMP Training - 09 project human resource management
ejlp12
 
PMP Training - 07 project cost management
ejlp12
 
PMP Training - 05 project scope management
ejlp12
 
PMP Training - 01 introduction to framework
ejlp12
 

Recently uploaded (20)

PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 

Introduction to Apache Cordova (Phonegap)

  • 2. Apache Cordova Apache Cordova is a platform for building natively installed mobile applications using HTML, CSS and JavaScript
  • 3. History Apache Cordova was originally called Phonegap build by Nitobi Open-source & free software from the beginning (MIT License), Apache License now Nitobi then aquired by Adobe and donated the PhoneGap codebase to the Apache Software Foundation (ASF) PhoneGap is still a product of Adobe. It is a distribution of Apache Cordova. Think of Apache Cordova as the engine that powers PhoneGap.
  • 5. Apache Cordova Application’s User Interface The user interface for Apache Cordova applications is created using HTML, CSS, and JavaScript. The UI layer is a web browser view that takes up 100% of the device width and 100% of the device height. The web view used by application is the same web view used by the native operating system iOS: Objective-C UIWebView class Android: android.webkit.WebView WP7: WebBrowser WP8: WebBrowser control (Internet Explorer 10) BlackBerry: WebWorks framework
  • 6. Apache Cordova API Provides an application programming interface (API) enables you to access native operating system functionality using JavaScript. APIs for Accelerometer, Camera, Compass, Media, FileSystem, etc Extendable using native plug-in docs.phonegap.com Cordova JavaScript API Cordova Application and Native API Cordova Native Library
  • 7. Supported Platforms Accelerometer Monitor the motion sensor on the device. Camera Take pictures with the device camera allow the user to select images from their photo library on the device. Capture Capture video and still images from the camera, and audio from the microphone. Compass Give users of your app some direction. Contacts Search and Create contacts in the user’s address book. File Low level read and write access to the file system. Upload and download files from a web server. GeoLocation Make your app location aware. Media Play and record audio files. Network Monitor the device connections Notification Access to vibration, beep and alerts. Storage Updated list: Persistent data store in WebStorage. http://wiki.apache.org/cordova/PlatformSupport
  • 8. Development using Cordova Tools for development Any HTML & JS editor Platform SDK e.g. Android SDT, Android SDK, BB SDK, Xcode, Visual Studio Mobile. Platform Emulator (usually provide along with SDK) JS/HTML GUI Mobile framework e.g. JQuery, Sencha Touch, dojo Mobile Browser e.g. Firefox with Bugzilla extension, Chrome Browser
  • 9. Getting Started Guides: • Getting Started with Android • Getting Started with Blackberry • Getting Started with iOS • Getting Started with Symbian • Getting Started with WebOS • Getting Started with Windows Phone • Getting Started with Windows 8 • Getting Started with Bada • Getting Started with Tizen http://docs.phonegap.com/en/2.2.0/guide_getting-started_index.md.html Use platform SDK to develop application for each target platform … Xcode Android SDK BB Java Eclipse Plug-in Visual Studio, Windows Eclipse ADT Plug-in Ripple Phone Dev Tools
  • 10. Code Example <!DOCTYPE html> <html> <head> <title>Device Properties Example</title> <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> <script type="text/javascript" charset="utf-8"> // Wait for Cordova to load document.addEventListener("deviceready", onDeviceReady, false); // Cordova is ready function onDeviceReady() { navigator.geolocation.getCurrentPosition(onSuccess, onError); } // onSuccess Geolocation function onSuccess(position) { var element = document.getElementById('geolocation'); element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' + 'Longitude: ' + position.coords.longitude + '<br />' + 'Altitude: ' + position.coords.altitude + '<br />' + 'Accuracy: ' + position.coords.accuracy + '<br />' + 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' + } // onError Callback receives a PositionError object function onError(error) { alert('code: ' + error.code + 'n' + message: ' + error.message + 'n'); } </script> </head> <body> <p id="geolocation">Finding geolocation...</p> </body> </html>
  • 11. Apache Cordova Native Plug-in What if a native feature isn’t available in Core APIs? PhoneGap is extensible with a “native plugin” model that enables you to write your own native logic to access via JavaScript. You develop your JavaScript class to mirror the API of the native class Invoke the native function using PhoneGap.exec() Plug-in class mappings: Android: res/xml/plugins.xml iOS: www/Cordova.plist BlackBerry: www/plugins.xml PhoneGap.exec(function(winParam){}, function(error){}, ”service”, ”action", [params]);
  • 12. Plugin Example (Android Native Code) package sample.cordova.plugin; import org.apache.cordova.api.CordovaPlugin; import org.apache.cordova.api.PluginResult; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * This class echoes a string called from JavaScript. Extend the Cordova Implement execute */ Plugin class method public class Echo extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { Define and handle if (action.equals("echo")) { action String message = args.getString(0); if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } return true; } return false; } }
  • 13. Plugin Example (HTML + JS Code) <!DOCTYPE html> <html> <head> <title>Cordova Plugin Test</title> <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> <script type="text/javascript" charset="utf-8"> var EchoPlugin = { callNativeFunction: function (success, fail, resultType) { return Cordova.exec( success, fail, “sample.cordova.plugin.Echo", "echo", [resultType]); } }; function callNativePlugin( returnSuccess ) { HelloPlugin.callNativeFunction( nativePluginResultHandler, nativePluginErrorHandler, returnSuccess ); } function nativePluginResultHandler (result) { alert("SUCCESS: rn"+result ); } function nativePluginErrorHandler (error) { alert("ERROR: rn"+error ); } </script> </head> <body> <body onload="onBodyLoad()"> <h1>Cordova Plugin Test</h1> <button onclick="callNativePlugin('success');">Click to invoke the Native Plugin!</button> </body>
  • 14. Resources Apache Cordova Website http://cordova.apache.org/ Apache Cordova Documentation http://docs.phonegap.com/en/2.2.0/index.html PhoneGap Day 2011 – IBM, PhoneGap and the Enterprise by Bryce Curtis [Aug 10, 2011] http://www.slideshare.net/drbac/phonegap-day-ibm-phonegap-and-the-enterprise (video) Andrew Trice’s Blog http://www.tricedesigns.com/category/cordova/

Editor's Notes

  • #6: Think of this as a “headless” web browser.  It renders HTML content, without the “chrome” or window decoration of a regular web browser.  You build your application to take advantage of this space, and you build navigational/interactive/content elements and application chrome into your HTML and CSS based user interface.-- https://github.com/mrlacey/phonegap-wp7/blob/master/framework/PhoneGap/NativeExecution.cs
  • #7: In addition to the “out of the box” functionality, you can also leverage PhoneGap’s JavaScript-to-native communication mechanism to write “native plugins”. PhoneGap native plugins enable you to write your own custom native classes and corresponding JavaScript interfaces for use within your PhoneGap applications.You build your application logic using JavaScript, and the PhoneGap API handles communication with the native operating system.If you need to access native functionality that isn’t already exposed, then you can easily create a native plugin to provide access to that native functionality.PhoneGap native plugins shouldn’t be thought of as “plugins” like Flash Player inside of a browser, rather you are “plugging in” additional functionality that extends the core PhoneGap framework.
  • #10: SDK for Windows Phone 7.0, 7.5 and 8.0 - https://dev.windowsphone.com/en-us/downloadsdkThe Windows Phone Software Development Kit (SDK) 8.0 provides you with the tools that you need to develop apps and games for Windows Phone 8 and Windows Phone 7.5.Visual StudioWindows Phone 8 EmulatorWindows Phone Application AnalysisSimulation DashboardStore Test Kit.The Windows Phone Software Development Kit (SDK) 7.1 provides you with all of the tools that you need to develop applications and games for both Windows Phone 7.0 and Windows Phone 7.5 devices.Microsoft Visual Studio 2010 Express for Windows PhoneWindows Phone EmulatorWindows Phone SDK 7.1 AssembliesSilverlight 4 SDK and DRTWindows Phone SDK 7.1 Extensions for XNA Game Studio 4.0Microsoft Expression Blend SDK for Windows Phone 7Microsoft Expression Blend SDK for Windows Phone OS 7.1WCF Data Services Client for Window PhoneMicrosoft Advertising SDK for Windows PhoneWindows Mobile 6, 6.5 - http://msdn.microsoft.com/en-us/windowsmobile/defaultStudio 2005 or 2008The Windows Mobile 6 SDK Refresh adds documentation, sample code, header and library files, emulator images and tools to Visual Studio that let you build applications for Windows Mobile 6.The Windows Mobile 6.5.3 DTK provides documentation, sample code, header and library files, emulator images and tools you can use with Visual Studio to build applications for Windows Mobile 6.5 and 6.5.3.
  • #12: function(winParam) {} - Success function callback. Assuming your exec call completes successfully, this function will be invoked (optionally with any parameters you pass back to it)function(error) {} - Error function callback. If the operation does not complete successfully, this function will be invoked (optionally with an error parameter)&quot;service&quot; - The service name to call into on the native side. This will be mapped to a native class. More on this in the native guides below&quot;action&quot; - The action name to call into. This is picked up by the native class receiving the exec call, and, depending on the platform, essentially maps to a class&apos;s method. [/* arguments */] - Arguments to get passed into the native environment