The Freedom to Open URLs in Third-Party Browsers on iOS with Custom UIActivity Subclasses.
Clone or download
Latest commit 8ae118e Sep 17, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets
FreedomExample
Sources
docs
.gitignore
.jazzy.yml
.swiftlint.yml
Freedom.podspec
Gemfile Minor updates Apr 5, 2018
Gemfile.lock
LICENSE
Package.swift Added SPM support Jul 9, 2017
README.md
screenshot.png

README.md

Freedom 🦅

The Freedom to Open URLs in Third-Party Browsers on iOS with Custom UIActivity Subclasses.

Swift Support

CocoaPods Carthage Compatible SwiftPM Compatible


About

Freedom enables your app to open URLs in third-party browsers that your users have installed on their device.

Currently Supported

Screenshot

Installation Instructions

Swift Version Branch Name Will Continue to Receive Updates?
4.2 master Yes
3.2 swift4.1 No
3.2 swift3.2 No
3.1 swift3.1 No

CocoaPods

pod 'Freedom' # Swift 4.2
pod 'Freedom', :git => 'https://github.com/ArtSabintsev/Freedom.git', :branch => 'swift4.1' # Swift 4.1
pod 'Freedom', :git => 'https://github.com/ArtSabintsev/Freedom.git', :branch => 'swift3.2' # Swift 3.2
pod 'Freedom', :git => 'https://github.com/ArtSabintsev/Freedom.git', :branch => 'swift3.1' # Swift 3.1

Carthage

github "ArtSabintsev/Freedom" // Swift 4.2
github "ArtSabintsev/Freedom", "swift4.1" // Swift 4.1
github "ArtSabintsev/Freedom", "swift3.2" // Swift 3.2
github "ArtSabintsev/Freedom", "swift3.1" // Swift 3.1

Swift Package Manager

.Package(url: "https://github.com/ArtSabintsev/Freedom.git", majorVersion: 1)

Usage

Open your Info.plist file, and add the following URL schemes to the LSApplicationQueriesSchemes key:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>brave</string>
  <string>dolphin</string>
  <string>firefox</string>
  <string>firefox-focus</string>
  <string>googlechrome</string>
</array>

Add the following code to some actionable/tappable element in your project. In this example, I am using an IBAction from a UIButton.

@IBAction func openURL(_ sender: UIButton) {

       // A Sample URL that just happens to be my personal website.
       let url = URL(string: "http://www.sabintsev.com")!

       // Enable Debug Logs (disabled by default)
       Freedom.debugEnabled = true

       // Fetch activities for Safari and all third-party browsers supported by Freedom (see screenshot).
       let activities = Freedom.browsers()

       // Alternatively, one could select a specific browser (or browsers).
       // let activities = Freedom.browsers([.chrome])
       let vc = UIActivityViewController(activityItems: [url], applicationActivities: activities)

       present(vc, animated: true, completion: nil)
   }

Notes

Even if you enable Freedom to support all browsers via Freedom.browsers(), only the browsers installed on your users device will be visible to the them in the share sheet (i.e., UIActivityViewController). Therefore, it is beneficial to all of your users to initialize Freedom with all supported browsers.

Created and maintained by

Arthur Ariel Sabintsev