forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add documentation about opening links on iOS.
Content mirrored from: https://developer.chrome.com/multidevice/ios/links https://github.com/googlechrome/openinchrome BUG= TBR=pkl@chromium.org Review-Url: https://codereview.chromium.org/2779863002 Cr-Commit-Position: refs/heads/master@{#459947}
- Loading branch information
Showing
1 changed file
with
95 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
# Opening links in Chrome for iOS</h1> | ||
|
||
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</li> | ||
* `openInChrome`: opens a given URL in Chrome</li> | ||
|
||
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"]]; | ||
``` |