CustomBrowserKit
CustomBrowserKit是一个库,旨在为您的优秀应用用户提供除Safari外打开链接的功能。它是用Objective-C编写的,并扩展到Swift。
支持浏览器
CustomBrowserKit目前支持以下浏览器:
- Google Chrome
- Firefox
- Opera Mini
- UC浏览器
- Puffin Web浏览器
- Yandex浏览器
- 当iOS版本为9.0以上时,在SFSafariViewController中打开链接
- Safari
需求
- Xcode 8.0+
- iOS 8.0+
- Swift 3.1+
安装
CustomBrowserKit可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中。
pod 'CustomBrowserKit'
此外,从iOS 9.0开始,您必须声明您想要启动的外部应用的URL方案。您可以使用两种无需声明适当URL方案的浏览器:BKBrowserInAppSafari
和 BKBrowserSafari
。因此,如果您想使用其他浏览器,您必须在您的应用的Info.plist文件中添加LSApplicationQueriesSchemes 键。您不需要添加下面的所有方案,只需添加您想让用户使用的那些方案。但添加这两个方案对于有两个方案的浏览器非常重要。例如,如果您想使用Google Chrome,您必须声明 googlechrome
和 googlechromes
URL方案。
浏览器 | URL方案 |
---|---|
Google Chrome | googlechrome googlechromes |
Firefox | firefox |
Opera | opera |
UC浏览器 | ucbrowser |
Puffin Web浏览器 | puffin puffins |
Yandex浏览器 | yandexbrowser-open-url |
用法
确保导入了框架头文件:#import <CustomBrowserKit/CustomBrowserKit.h>
(用于Objective-C)或 import CustomBrowserKit
(用于Swift)。
获取浏览器信息
Objective-C
BKBrowser browser = BKBrowserFirefox;
NSString *browserName = BKBrowserGetName(browser); // @"Firefox"
UIImage *browserLogo = BKBrowserGetThumbnail(browser); // UIImage of size 100x100
Swift
let browser = BKBrowser.firefox
let browserName = browser.name // "Firefox"
let browserLogo = browser.thumbnail // UIImage of size 100x100
获取可用浏览器列表
Objective-C
for (NSNumber *wrappedBrowser in BKManager.availableBrowsers) {
BKBrowser browser = (BKBrowser)wrappedBrowser.intValue;
NSLog(@"%@ is available", BKBrowserGetName(browser));
}
Swift
for browser in BKManager.availableBrowsers {
print("\(browser.name) is available")
}
在特定浏览器中打开链接
Objective-C
NSURL *url = [NSURL URLWithString:@"https://google.com/"];
if ([BKManager openURL:url withBrowser:BKBrowserOpera]) {
NSLog(@"did open url successfully");
} else {
NSLog(@"did fail to open url");
}
Swift
let url = URL(string: "https://google.com/")!
if BKManager.open(url, with: .opera) {
print("did open url successfully")
} else {
print("did fail to open url")
}
需要时回退到另一个浏览器打开链接
Objective-C
NSURL *url = [NSURL URLWithString:@"https://google.com/"];
// BKManager will try to open URL in Opera. If Opera Mini turns out to not be installed or available, BKManager will try to open URL in Google Chrome.
if ([BKManager openURL:url withBrowser:BKBrowserOpera fallbackToBrowser:BKBrowserChrome]) {
NSLog(@"did open url successfully");
} else { // if both Opera Mini and Google Chrome are not available
NSLog(@"did fail to open url");
}
Swift
let url = URL(string: "https://google.com/")!
// BKManager will try to open URL in Opera. If Opera Mini turns out to not be installed or available, BKManager will try to open URL in Google Chrome.
if BKManager.open(url, with: .opera, fallbackTo: .chrome) {
print("did open url successfully")
} else { // if both Opera Mini and Google Chrome are not available
print("did fail to open url")
}
BKBrowser
保存到 NSUserDefaults
将 Objective-C
BKBrowser browser = BKBrowserUCBrowser;
NSUserDefaults *userDefaults = NSUserDefaults.standardUserDefaults;
// saving
[userDefaults setObject:BKBrowserGetIdentifier(browser) forKey:@"savedBrowser"];
// restoring
NSString *browserIdentifier = [userDefaults stringForKey:@"savedBrowser"];
BKBrowser savedBrowser;
if (browserIdentifier) {
savedBrowser = BKBrowserFromIdentifier(browserIdentifier);
} else {
savedBrowser = BKBrowserInAppSafari;
}
Swift
let browser = BKBrowser.ucBrowser
let userDefault = UserDefaults.standard
// saving
userDefault.set(browser.identifier, forKey: "savedBrowser")
// restoring
let savedBrowser: BKBrowser
if let browserIdentifier = userDefault.string(forKey: savedBrowser) {
savedBrowser = BKBrowser(identifier: browserIdentifier)
} else {
savedBrowser = .inAppSafari
}
示例
要运行示例项目,首先克隆存储库,然后从 Example 目录运行 pod install
。示例项目包括 Objective-C 和 Swift 版本。
许可协议
CustomBrowserKit 在 MIT 许可协议下可用。更多信息请查看 LICENSE 文件。