| # Opening links in Chrome for iOS |
| |
| The easiest way to have your iOS app open links in Chrome is to use the |
| [OpenInChromeController](https://github.com/GoogleChrome/OpenInChrome) class. |
| This API is described here along with the URI schemes it supports. |
| |
| ## Using OpenInChromeController to open links |
| |
| The **OpenInChromeController** class provides methods that |
| encapsulate the URI schemes and the scheme replacement process also described |
| in this document. Use this class to check if Chrome is installed or to specify |
| the URL to open. |
| |
| ### Methods |
| |
| * `isChromeInstalled`: returns YES if Chrome is installed |
| * `openInChrome`: opens a given URL in Chrome |
| |
| For example, use the OpenInChromeController class as follows: |
| |
| ``` |
| if ([openInController_ isChromeInstalled]) { |
| [openInController_ openInChrome:urlToOpen]; |
| } |
| ``` |
| |
| ## Downloading the class file |
| |
| The OpenInChromeController class file is available |
| [here](https://github.com/GoogleChrome/OpenInChrome). Copy it into |
| your Xcode installation. |
| |
| The rest of this document describes the underpinnings of this API. |
| |
| ## URI schemes |
| |
| Chrome for iOS handles the following URI Schemes: |
| |
| * `googlechrome` for http |
| * `googlechromes` for https |
| |
| To check if Chrome is installed, an app can simply check if either of these URI schemes is available: |
| |
| ``` |
| [[UIApplication sharedApplication] canOpenURL: |
| [NSURL URLWithString:@"googlechrome://"]]; |
| ``` |
| |
| This step is useful in case an app would like to change the UI depending |
| on if Chrome is installed or not. For instance the app could add an |
| option to open URLs in Chrome in a share menu or action sheet. |
| |
| To actually open a URL in Chrome, the URI scheme provided in the URL |
| must be changed from `http` or `https` to the Google Chrome equivalent of |
| `googlechrome` or `googlechromes` respectively. |
| The following sample code opens a URL in Chrome: |
| |
| ``` |
| NSURL *inputURL = <the URL to open>; |
| NSString *scheme = inputURL.scheme; |
| |
| // Replace the URL Scheme with the Chrome equivalent. |
| NSString *chromeScheme = nil; |
| if ([scheme isEqualToString:@"http"]) { |
| chromeScheme = @"googlechrome"; |
| } else if ([scheme isEqualToString:@"https"]) { |
| chromeScheme = @"googlechromes"; |
| } |
| |
| // Proceed only if a valid Google Chrome URI Scheme is available. |
| if (chromeScheme) { |
| NSString *absoluteString = [inputURL absoluteString]; |
| NSRange rangeForScheme = [absoluteString rangeOfString:@":"]; |
| NSString *urlNoScheme = |
| [absoluteString substringFromIndex:rangeForScheme.location]; |
| NSString *chromeURLString = |
| [chromeScheme stringByAppendingString:urlNoScheme]; |
| NSURL *chromeURL = [NSURL URLWithString:chromeURLString]; |
| |
| // Open the URL with Chrome. |
| [[UIApplication sharedApplication] openURL:chromeURL]; |
| } |
| ``` |
| |
| If Chrome is installed, the above code converts the URI scheme found in |
| the URL to the Google Chrome equivalent. When Google Chrome opens, the |
| URL passed as a parameter will be opened in a new tab. |
| |
| If Chrome is not installed the user can be prompted to download it from the App Store. |
| If the user agrees, the app can open the App Store download page using the following: |
| |
| ``` |
| [[UIApplication sharedApplication] openURL:[NSURL URLWithString: |
| @"itms-apps://itunes.apple.com/us/app/chrome/id535886823"]]; |
| ``` |