Added NSLog notification for beginning backup to iCloud (closes #96)
[cordova-ios.git] / guides / Cordova Plugin Upgrade Guide.md
1 # Cordova Plugin Upgrade Guide #
2
3 This document is for developers who need to upgrade their Cordova  plugins to a newer Cordova version. Starting with Cordova 1.5.0, some classes have been renamed, which will require the plugin to be upgraded. Make sure your project itself has been upgraded using the "Cordova Upgrade Guide" document.
4
5
6 ## Upgrading older Cordova plugins to 1.6.0 ##
7
8 1. **Install** Cordova 1.6.0
9 2. Follow the **"Upgrading older Cordova plugins to 1.5.0"** section, if necessary
10 3. See the **1.6.0 Plugin Notes** section for new functionality available to plugins
11
12
13 ## Upgrading older Cordova plugins to 1.5.0 ##
14
15 1. **Install** Cordova 1.5.0
16 2. Replace macro occurrences of **"PHONEGAP\_FRAMEWORK"** with **"CORDOVA\_FRAMEWORK"**
17 3. Replace import occurrences of **"<PhoneGap/"** with **"<Cordova/"**
18 4. Replace class prefixes of **PG** with **CDV** (for example **PG**Plugin becomes **CDV**Plugin)
19 5. Replace occurrences of **[self appViewController]** with **self.viewController**. 
20 6. See the **1.5.0 Plugin Notes** section for new functionality available to plugins
21
22 ## 1.6.0 Plugin Notes ##
23
24 1. There is a new CDVCommandDelegate protocol method available:
25
26         - (void) registerPlugin:(CDVPlugin*)plugin withClassName:(NSString*)className;
27     
28     You use this in your plugin to initialize another plugin that your plugin needs to be available and running (dependency), and all plugins can access the registered plugin from the **getCommandInstance** method of the CDVCommandDelegate. This is a substitute for listing a plugin your plugin depends on, in **Cordova.plist/Plugins**.
29 2. There is a new **IsAtLeastiOSVersion** macro available in **CDVAvailability.h**:
30
31         // Returns YES if it is at least version specified as NSString(X)
32         if (IsAtLeastiOSVersion(@"5.1")) {
33             // do something for iOS 5.1 or greater
34         }
35 3. There are **Compatibility headers** available for versions 0.9.6 and 1.5.0, in **~/Documents/CordovaLib/Classes/compatibility** (where ~ signifies your Home folder). See the **"README.txt"** in that folder for instructions. 
36     
37     Note that including these headers are all or nothing - you can't have a mix and match of plugin versions, if you include the 0.9.6 compatibility header - all your plugins must be of the same "version". It is highly recommended that you upgrade your plugins to the current version instead of using these stop-gap headers. 
38     
39     The 1.5.0 header shouldn't be used - this is included for the [LocalStorage patch](https://issues.apache.org/jira/browse/CB-330) and is for using core plugins as general plugins that easily support multiple versions, and may be removed in the future.
40
41
42 ## 1.5.0 Plugin Notes ##
43
44 1. The UIViewController returned from the **viewController property** will be a CDVViewController subclass.
45 2. The **appDelegate method** basically returns an (id) now, and is the same as calling **[[UIApplication sharedApplication] delegate]**. In the past it returned a PhoneGapDelegate class.
46 3. There is a new **commandDelegate property** now, which gives access to the [CDVCommandDelegate protocol](https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVCommandDelegate.h) used by the app
47 4. There is a new header file **CDVAvailability.h** that defines Cordova versions during compile time - to check for the current version during run-time, call **[CDVViewController cordovaVersion]**
48
49