Skip to content
/ Appz Public

📱 Launch external apps, and deeplink, with ease using Swift!

License

Notifications You must be signed in to change notification settings

SwiftKitz/Appz

Repository files navigation

Appz 📱

Deeplinking to external applications made easy

Version Version Swift Platforms Carthage Supported Apps

Highlights

  • Web Fallback Support:
    In case the app can't open the external application, it will fall-back to a web URL that is guaranteed to succeed by opening the browser.

  • Isolated App Specs:
    It was crucial to make sure the library can scale as the number of supported apps increase. Therefor, each supported app is implemented in isolation in a separate file.

  • Full Autocomplete Support: The API has been carefully designed to make the most out of auto complete features, so you don't even have to peak into any docs or code!

  • Full Testing:
    To make the specs as transparent as possible, the library has tests to make sure every external application action has tests with the expected results.

Features

You can try them in the playground shipped with the framework!

Concise syntax to trigger deep linking:

let app = UIApplication.shared
app.canOpen(Applications.Instagram())
app.open(Applications.AppStore(), action: .account(id: "395107918"))
app.open(Applications.AppSettings(), action: .open)

Transparent web fallback:

// In case the user doesn't have twitter installed, it will fallback to
// https://twitter.com/testUser/statuses/2
app.open(Applications.Twitter(), action: .status(id: "2",  screenName: "testUser"))

Add your applications:

// Applications are recommended to be part of the
// "Applications" namespace
extension Applications {
    // Define your application as a type that
    // conforms to "ExternalApplication"
    struct MyApp: ExternalApplication {