SkillAgentSearch skills...

Appz

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

Install / Use

/learn @SwiftKitz/Appz
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<h1 align="center"> Appz :iphone: <h6 align="center"> Deeplinking to external applications made easy </h6> </h1> <p align="center"> <img alt="Version" src="https://img.shields.io/badge/version-3.2.0-blue.svg"/> <a alt="Travis CI" href="https://travis-ci.org/SwiftKitz/Appz"> <img alt="Version" src="https://travis-ci.org/SwiftKitz/Appz.svg?branch=master"/> </a> <img alt="Swift" src="https://img.shields.io/badge/swift-5-orange.svg"/> <img alt="Platforms" src="https://img.shields.io/badge/platform-ios%20%7C%20watchos%20%7C%20tvos-lightgrey.svg"/> <a alt="Carthage Compatible" href="https://github.com/SwiftKitz/Appz#carthage"> <img alt="Carthage" src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat"/> </a> <img alt="Supported Apps" src="https://img.shields.io/badge/Apps-172-9600cd.svg"/> </p> <p align="center"> <img src="resources/Demo.gif"> </p>

Highlights

  • Web Fallback Support:<br /> 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:<br /> 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:<br /> 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 {

        typealias ActionType = Applications.MyApp.Action

        let scheme = "myapp:"
        let fallbackURL = ""
        let appStoreId = ""
    }
}
// Then, you define the actions your app supports
extension Applications.MyApp {

    enum Action: ExternalApplicationAction {

        case open

        // Each action should provide an app path and web path to be
        // added to the associated URL
        var paths: ActionPaths {

            switch self {
            case .open:
                return ActionPaths()
            }
        }
    }
}

app.open(Applications.MyApp(), action: .open)

Supported Apps (for now!):

App | Actions ----|-------- [AirLaunch][AirLaunch-link] | Open [AliExpress][AliExpress-link] | Open [AllCast][AllCast-link] | Open [AppleMaps][AppleMaps-link] | Open [AppSettings][AppSettings-link] | Open [AppStore][AppStore-link] | Developer, App, Rate App [AppleWatch][AppleWatch-link] | Open [Audible][Audible-link] | Open [Ayah][Ayah-link] | Open [Behance][Behance-link] | Open, UserProfile [BNR][BNR-link] | Open [Box][Box-link] | Open [Buzzfeed][Buzzfeed-link] | Open [Calendars5][Calendars5-link] | Open [Camera360][Camera360-link] | Open [Careem][Careem-link] | Open [Chromecast][Chromecast-link] | Open [CirclePay][CirclePay-link] | Open, Request, Send [Clips][Clips-link] | Open [Cnet][Cnet-link] | Open [CNN][CNN-link] | Open [Currency][Currency-link] | Open [DailyMotion][DailyMotion-link] | Open [DamaKing][DamaKing-link] | Open [DayCost][DayCost-link] | Open [DayOne][DayOne-link] | Open [Diigo][Diigo-link] | Open [Documents][Documents-link] | Open [Dropbox][Dropbox-link] | Open [Duolingo][Duolingo-link] | Open [eBay][eBay-link] | Open [Echofon][Echofon-link] | Open [Epson][Epson-link] | Open [Everypost][Everypost-link] | Open [EyeEm][EyeEm-link] | Open [Facebook][Facebook-link] | Open, Profile, Notification, Feed, Page, Action [FaceTime][FaceTime-link] | Video Call [FaceTime audio][FaceTime audio-link] | Audio Call [Feedly][Feedly-link] | Open [FileApp][FileApp-link] | Open [FindFriends][FindFriends-link] | Open [FindiPhone][FindiPhone-link] | Open [Fitbit][Fitbit-link] | Open [Flickr][Flickr-link] | Open [Flipboard][Flipboard-link] | Open [FlippsTV][FlippsTV-link] | Open [Forest][Forest-link] | Open [Foursquare][Foursquare-link] | Open [FriendlySocial][FriendlySocial-link] | Open [Gallery][Gallery-link] | Open [Glympse][Glympse-link] | Open [GoogleCalendar][GoogleCalendar-link] | Open, CreateEvent [GoogleChrome][GoogleChrome-link] | Open [GoogleDocs][GoogleDocs-link] | Open [GoogleDrive][GoogleDrive-link] | Open [GoogleEarth][GoogleEarth-link] | Open [GoogleMail][GoogleMail-link] | Open [GoogleMaps][GoogleMaps-link] | Open, Display Directions, Display Location, Search [GooglePhotos][GooglePhotos-link] | Open [GooglePlus][GooglePlus-link] | Open [GoogleSheets][GoogleSheets-link] | Open [GoogleSlides][GoogleSlides-link] | Open [GoogleTranslate][GoogleTranslate-link] | Open [GroupeMe][GroupeMe-link] | Open [Heapo][Heapo-link] | Open [HootSuite][HootSuite-link] | Open [iBooks][iBooks-link] | Open [IMDb][IMDb-link] | Open, Search, Title, Boxoffice, Showtimes, Feature Coming Soon, Feature Best Picture, Feature Born Today, Top rated movies, Most popular movies. [iMovie][iMovie-link] | Open [INRIXTraffic][INRIXTraffic-link] | Open [Instagram][Instagram-link] | Open, Camera, Library, Media, Username, Location, Tag [Instapaper][Instapaper-link] | Open [iShows][iShows-link] | Open [iTranslate][iTranslate-link] | Open, Translate [iTunesU][iTunesU-link] | Open [KakaoTalk][KakaoTalk-link] | Open [Kayak][Kayak-link] | Open [Keeper][Keeper-link] | Open [Kik][Kik-link] | Open [LastPass][LastPass-link] | Open [Line][Line-link] | Open [Linkedin][Linkedin-link] | Open [Mail][Mail-link] | Compose [Marktplaats][Marktplaats-link] | Open [Marvis][Marvis-link] | Open [Meerkat][Meerkat-link] | Open [Messages][Messages-link] | SMS [MobileMouse][MobileMouse-link] | Open [Mopico][Mopico-link] | Open [Moves][Moves-link] | Open [Music][Music-link] | Open [MyFitnessPal][MyFitnessPal-link] | Open [NameShark][NameShark-link] | Open [Netflix][Netflix-link] | Open [Notes][Notes-link] | Open [NPORadio][NPORadio-link] | Open [NU.nl][NU.nl-link] | Open [NYTimes][NYTimes-link] | Open [OneMorething][OneMorething-link] | Open [OneDrive][OneDrive-link] | Open [OnePassword][OnePassword-link] | Open [Outlook][Outlook-link] | Open, Compose [Paypal][Paypal-link] | Open [Periscope][Periscope-link] | Open [Phone][Phone-link] | Open [Photos][Photos-link] | Open [PicCollage][PicCollage-link] | Open [Pinterest][Pinterest-link] | Open, UserProfile, Search [Pocket][Pocket-link] | Open [Podcasts][Podcasts-link] | Open [Quora][Quora-link] | Open [Radium][Radium-link] | Open [RemindersApp][RemindersApp-link] | Open [Remote][Remote-link] | Open [Rijnmond][Rijnmond-link] | Open [RoboForm][RoboForm-link] | Open [RunKeeper][RunKeeper-link] | Open [ScannerPro][ScannerPro-link] | Open [Simplenote][Simplenote-link] | Open [Skitch][Skitch-link] | Open [Skype][Skype-link] | Open [Slack][Slack-link] | Open, Channel, Direct Message, Open File, Search [Snapchat][Snapchat-link] | Open, Add [Snapseed][Snapseed-link] | Open [Songpop2][Songpop2-link] | Open [Sonos][Sonos-link] | Open [Soundflake][Soundflake-link] | Open [Spark][Spark-link] | Compose [StitcherRadio][StitcherRadio-link] | Open [Strava][Strava-link] | Open [SubwayKorea][SubwayKorea-link] | Open [SunriseCalendar][SunriseCalendar-link] | Open [Swarm][Swarm-link] | Open [Super-Stickman-Golf-2][Super-Stickman-Golf-2-link] | Open [Talabat][Talabat-link] | Open [Tango][Tango-link] | Open [Ted][Ted-link] | Open [Telegram][Telegram-link] | Open, SMS, openFromID [TestFlight][TestFlight-link] | Open [Tinder][Tinder-link] | Open [Trello][Trello-link] | Open [Tubex][Tubex-link] | Open [Tumblr][Tumblr-link] | Open, Dashboard, Explore, Activity, Blog, Tag [Tweetbot][Tweetbot-link] | Timeline, Post, Mentions, Lists, Retweets, Favorites, Messages, Status, Search, Profile, Follow, Unfollow, Favorite, Unfavorite, Retweet, List [Twitter][Twitter-link] | Status, UserHandle, UserId, List, Post, Search, Timeline, Mentions, Messages [Twitterrific][Twitterrific-link] | Open, MentionsView, MessagesView, FavoritesView, Search, TweetID, MessageID, Post, UserProfile [Uber][Uber-link] | Open [Unread][Unread-link] | Open [Ustream][Ustream-link] | Open [Viber][Viber-link] | Open Calls Tab, Open Chats Tab [Videos][Videos-link] | Open [Views][Views-link] | Open [Vimeo][Vimeo-link] | Open [Vine][Vine-link] | Open, Popular Timelines [VIPAccess][VIPAccess-link] | Open [Vox][Vox-link] | Open [Voxer][Voxer-link] | Open [VSCO][VSCO-link] | Open [Wallet][Wallet-link] | Open [Waze][Waze-link] | Open, NavigateToDirection [WeChat][WeChat-link] | Open [Weibo][Weibo-link] | Open [WhatsApp][WhatsApp-link] | Open [Whyd][Whyd-link] | Open [Wikipanion][Wikipanion-link] | Open [WordPress][WordPress-link] | Open [Workflow][Workflow-link] | Open [Yammer][Yammer-link] | Open [Yelp][Yelp-link] | Open, Search, Search Location, Search Category, Search Category Location, Business [Youtube][Youtube-link] | Open, Open Video [FRIL][FRIL-link] | Open

Getting Started

Configure Info.plist

You must add the schemes you want to use to your app's info.plist file under LSApplicationQueriesSchemes. See here for more.

Carthage

[Carthage][carthage-link] is fully supported. Simply add the following line to your [Cartfile][cartfile-docs]:

View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated1mo ago
Forks76

Languages

Swift

Security Score

100/100

Audited on Feb 16, 2026

No findings